1)def—定义函数
2)形参和实参
函数定义过程中的name是叫形参;传递进来的小甲鱼叫实参。
函数文档打印方法:
>>> def MyFirstFunction(name):
'函数定义过程中的name是叫形参' ----函数文档
#因为Ta只是一个形式,表示占据一个参数位置
print('传递进来的' + name + '叫做实参,因为Ta是具体的参数值!')
>>> MyFirstFunction.__doc__ ----(函数对象,双下横下开始跟结束)
'函数定义过程中的name是叫形参'
或者
>>> help(MyFirstFunction)
Help on function MyFirstFunction in module __main__:
MyFirstFunction(name)
函数定义过程中的name是叫形参
3)关键字参数
>>> SaySome('小甲鱼', '让编程改变世界!')
小甲鱼->让编程改变世界!
>>> SaySome('让编程改变世界!', '小甲鱼')
让编程改变世界!->小甲鱼
>>> SaySome(words='让编程改变世界!', name='小甲鱼')
小甲鱼->让编程改变世界!
4)默认参数
>>> def SaySome(name='小甲鱼', words='让编程改变世界!'):
print(name + '->' +words)
>>> SaySome()
小甲鱼->让编程改变世界!
给予默认值,函数未传递参数不报错。
5)收集参数:
>>> def test(*params):
print('参数的长度是:', len(params));
print('第二个参数是:', params[1]);
>>> test(1, '小甲鱼', 3.14, 5, 6, 7, 8)
参数的长度是: 7
第二个参数是: 小甲鱼
如果收集参数后面有其他参数,则设置为默认参数比较保险,不会出错。
>>> def test(*params, exp):
print('参数的长度是:', len(params), exp);
print('第二个参数是:', params[1]);
>>> test(1,'小甲鱼', 2, 3, 4, 5, 6, 7, 8)
Traceback (most recent call last):
File "" , line 1, in
test(1,'小甲鱼', 2, 3, 4, 5, 6, 7, 8)
TypeError: test() missing 1 required keyword-only argument: 'exp'
>>> test(1,'小甲鱼', 2, 3, 4, 5, 6, 7, exp=8)
参数的长度是: 8 8
第二个参数是: 小甲鱼
>>> def test(*params, exp=8):
print('参数的长度是:', len(params), exp);
print('第二个参数是:', params[1]);
>>> test(1,'小甲鱼', 2, 3, 4, 5, 6, 7, 8)
参数的长度是: 9 8
第二个参数是: 小甲鱼
元组不一定需要括号,默认的多个返回如果不加括号,返回的是元组,例:return 1,’小甲鱼’, 2
注意:不要在函数内部去修改全局变量的值。它会在函数内部去建立一个存储数据的值,虽然名字一样,但是访问不同。
例:
1)Global关键字
Python使用屏蔽shadow机制,全局变量被局部变量所屏蔽,局部变量的修改不会影响全局变量。
例 :
global关键字
2)闭包
列表跟nonlocal关键字的使用。
1)Lambda 参数1,参数2:返回值
例:
>>> lambda x,y:x+y
lambda> at 0x000000000373B2F0>
>>> g=lambda x,y:x+y
>>> g(2,3)
5
2)Lambda表达式的作用