本学习系列介绍:
本学习系列主要针对对编程略有了解或有其他语言基础并要进一步学习Python的同学,通过简易的代码快速入门掌握Python语言。
系列总目录: |
---|
用简易代码快速学习Python(一) |
用简易代码快速学习Python(二) |
用简易代码快速学习Python(三) |
用简易代码快速学习Python(四) |
用简易代码快速学习Python(五) |
用简易代码快速学习Python(六) |
用简易代码快速学习Python(七) |
用简易代码快速学习Python(八) |
用简易代码快速学习Python(九) |
用简易代码快速学习Python(十) |
Day03:
函数文档:
def MyFirstFunction(name):
'函数定义过程中的name叫做形参,实际传进来的数据叫做实参。' #函数第一行字符串为函数文档,用于解释函数。
print(name)
print(MyFirstFunction.__doc__) #直接输出函数文档的字符串。
help(MyFirstFunction)
#以下为help函数方式的输出:
#Help on function MyFirstFunction in module __main__:
#
#MyFirstFunction(name)
# 函数定义过程中的name叫做形参,实际传进来的数据叫做实参。
函数的一些知识点:
关键字参数:
def SaySome(name, words):
print(name + ':' + words)
SaySome(words='123', name='lxy') #输出:lxy:123
默认参数:
def SaySome(name, words = '123'):
print(name + ':' + words)
SaySome('111') #输出:111:123
注意:默认参数后不能再出现普通形式的参数,只能是默认参数或收集参数,普通参数只能出现在默认参数之前。
收集参数:
def test(*params):
print('参数长度为:' , len(params))
print(params[1])
test(1, '111', 234, 3.14)
#输出:
#参数长度为: 4
#111
注意:如果收集参数后还有其他参数,那么其他参数应该使用默认参数或普通参数的关键字形式传入。
局部变量和全局变量:
注意:在函数中可以访问全局变量,但在函数中直接修改全局变量是无效的(这里与Java不同),Python此时会生成一个和全局变量名称相同的局部变量来运算,而全局变量没有真正改变。如果想要真正的在函数中修改全局变量,需要在函数中用global关键字修饰该全局变量。
闭包:
闭包:如果在一个内部函数中,对在外部作用域的变量的引用,称这个内部函数为一个闭包。
例如:
def Function1(x):
def Function2(y):
return x * y
return Function2 #注意这里不是Function2(),没有括号。
a = Function1
print(type(a)) #输出:<class 'function'>
print(type(a(2))) #输出:<class 'function'>
print(a(2)(3)) #输出:6
注意:如果想在闭包中对外部作用域的变量进行修改(相当于在局部对全局变量的修改),需要使用nonlocal关键字(相当于global关键字)对需要修改的外部变量进行修饰才能修改,否则只会生成一个和外部变量名称相同的局部变量来运算,而外部变量没有真正改变。
例如:
def Function3():
x = 5
def Function4():
nonlocal x
x = x * 3
return x
return Function4()
print(Function3()) #输出:15
Lambda表达式:
Python写一些执行脚本时,使用Lambda表达式就可以省下定义函数的过程,使得代码更加精简。
f = lambda x : 4 * x + 5
print(f(4)) #输出:21
f = lambda x, y : x + y
print(f(3, 5)) #输出:8
过滤器filter函数:
filter(function or None, iterable)
若第一个参数为None,代表直接过滤掉iterable中的0和false。
若第一个参数为函数,则根据函数运算后进行过滤掉iterable中的0和false。
返回值为一个filter类型的对象,需要用容器接收。
例如:
def odd(x):
return x % 2
temp = range(10)
print(type(filter(odd, temp))) #输出:<class 'filter'>
print(list(filter(odd, temp))) #输出:[1,3,5,7,9]
也可以使用Lambda表达式简化:
print(list(filter(lambda x : x % 2, range(10)))) #输出:[1,3,5,7,9]
映射map函数:
map(func, *iterables)
返回值为一个map类型的对象,需要用容器接收。
例如:
print(list(map(lambda x, y : x * 2 + y, [1,2,3], [9,6,5,1]))) #输出:[11, 10, 11]