python-day3-之函数

不使用函数的情况下只能遵循面向过程的编程,即,根据业务逻辑从上到下实现功能,往往重复的功能,使得代码出现重复。

1 #最简单的函数调用
2 #由于python遵循从上到下读入内存的规律,所以函数要放到调用的前面
3 def s1():
4     print('hello world')
5 s1()
#显示:hello world
#函数的参数传入
def s1(name):
    print('my name is %s'%name)

s1('liguangxu')
#显示:my name is liguangxu
#函数的多参数调用(实参与形参相对应)
def s1(name,age,what):
    print('my name is %s,age is %s, is %s'%(name,age,what))
s1('liguangxu',23,'good man')
#显示:my name is liguangxu,age is 23, is good man
#函数的不同位置实参的传入(需要给实参指定对应形参)
def s1(name,age,what):
    print('my name is %s,age is %s, is %s'%(name,age,what))

s1(age=18,what='good man',name='liguangxu')
#显示:my name is liguangxu,age is 18, is good man
#函数形参的默认值(含有默认值的形参必须放在最后)
def s1(name,age,what='good man'):
    print('my name is %s,age is %s, is %s'%(name,age,what))

s1(age=18,name='liguangxu')
#显示:my name is liguangxu,age is 18, is good man

s1(age=18,what='bad man',name='liguangxu')
#显示:s1(age=18,what='bad man',name='liguangxu')
#函数的动态参数,会将实参放入元组中
def test(*args):
    print(args,type(args))

test('123')
#显示('123',) <class 'tuple'>

#函数的动态参数,传入的实参为一组元素,将li整个列表放入元组中
def test(*args):
    print(args,type(args))

li=[11,22,33,45]
test(li)
#显示([11, 22, 33, 45],) <class 'tuple'>

#传入带一个*的列表,将li列表中的每个元素放到元组中
def test(*args):
    print(args,type(args))

li=[11,22,33,45]
test(*li)
#显示:(11, 22, 33, 45) <class 'tuple'> 
test(*'alex')
#显示:('a', 'l', 'e', 'x') <class 'tuple'>
#总结:实参前加个‘*’相当于加了个for循环遍历实参的每个元素,并一一放入元组中
#动态参数形参含两个*,将键值对传入,并保存成字典的形式
def f2(**kwargs):
    print(kwargs)

f2(n1='alex',n2=18)
#显示:{'n1': 'alex', 'n2': 18}

dic={'k1':'v1','k2':'v2'}
f2(kk=dic)#{'kk': {'k1': 'v1', 'k2': 'v2'}}
#显示{'kk': {'k1': 'v1', 'k2': 'v2'}}

#万能参数
def f1(*args,**kwargs):
    print(args)
    print(kwargs)
f1(11,22,33,44,55,k1='aa',k2='bb')
#运行结果(11, 22, 33, 44, 55) 
              {'k1': 'aa', 'k2': 'bb'}            
#formate传参方式
#方式1    
s1='i am {0},age{1}'.format('alex',18)
print(s1)
#显示:i am alex,age18

#方式2
s2='i am {0},age{1}'.format(*['alex',18])#传列表
print(s2)
#显示i am alex,age18

#方式3
s1='i am {name}, age{age}'.format(name='alex',age=18)#字符串中name与age后面一定要加上name=‘’,age=进行指定
print(s1)
#显示:i am alex, age18

#方式4
dic={'name':'alex','age':18}
s2='i am {name},age{age}'.format(**dic)#传字典要加**
print(s2)
#显示:i am alex,age18
#传过来的形参可使用方法不能重新赋值 ,建议全局变量名需大写
#传的是引用 不是复制
def f5(a1):
    a1.append('123')
li=[11,22,33,44]
f5(li)
#显示:[11, 22, 33, 44, '123']
1 #全局变量,所有的作用域,都可读,对全局变量进行【重新赋值】,需要加上global,特殊:列表,字典,可修改,不可重新赋值
2 def f1():
3     global name#表示name为全局变量
4     name='123'
5     print(name)
6 
7 name='456'
8 f1()
9 #显示:123

 

posted @ 2016-05-22 23:36  ppppppy  阅读(250)  评论(0编辑  收藏  举报