版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本系列定位为复习笔记,某些内容并未提及。
在此记录一些典型疑问和我在学习中的问题或经常遗忘的细节,也会添加一些觉得有意思的部分(其实就是随心所欲 )
内容主要使用代码进行传达
函数的定义与调用
def printme(str):
print(str)
printme("1")
printme("2")
temp = printme('hello')
print(temp)
=================== RESTART: C:\Users\雨田人尹\Desktop\test.py ===================
我要调用用户自定义函数!
再次调用同一函数
hello
None
#由于函数没有设置return返回值,因此temp被赋予了None对象
函数的参数:
三种最常见与使用的参数:
- 位置参数
- 默认参数
- 可变参数
与
(关键字参数,命名关键字参数)
可变参数是一个元组
def add(x, y=23, *var):
print(x)
print(y)
print(var)
#warining 此处输入参数的方式,默认参数一般放最后要好一点!!!!!!!!!
>>> add(2)
2
23
()
>>> add(2,3)
2
3
()
>>> add(2,3,5)
2
3
(5,)
>>> add(2,y=3,3,4)
SyntaxError: positional argument follows keyword argument
>>> add(2,y=3)
2
3
()
global与nonlocal关键字的使用:
global用于申明函数外的变量,为整个程序的全局变量
nonlocal主要用于实现闭包内嵌函数,在函数中,使用递归时设置一个函数内的局部的全局变量
num = 1
def fun1():
global num # 需要使用 global 关键字声明
print(num) # 1
num = 123
print(num) # 123
fun1()
print(num) # 123
def add():
a=1
def add2():
nonlocal a
a+=1
return a
print(add2())
=================== RESTART: C:\Users\雨田人尹\Desktop\test.py ===================
>>> add()
2
如果在一个内部函数里对外层非全局作用域的变量进行引用,那么内部函数就被认为是闭包。
通过闭包可以访问外层非全局作用域的变量,这个作用域称为 闭包作用域。
def funX(x):
def funY(y):
return x * y
return funY
i = funX(8)
print(type(i)) # <class 'function'>
print(i(5)) # 40
递归
递归可参考我力扣刷题的递归类题型
lamda表达式的应用
filter lambda map与列表推导式,3元判断符
>>> list(filter(lambda x : 1 if x%3==0 else 0,range(0,101) ))
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
>>> [x for x in range(0,101) if x%3==0]
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
>>> [x%3 for x in range(0,101) if x%3==0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>>list(map(lambda x:[x**2,x],range(11)))
[[0, 0], [1, 1], [4, 2], [9, 3], [16, 4], [25, 5], [36, 6], [49, 7], [64, 8], [81, 9], [100, 10]]
>>>list(zip([1,3,5,7,9],[2,4,6,8,10]))
[(1,2),(3,4),(5,6),(7,8),(9,10)]
>>>list(map(lambda x,y:[x,y],[123,1234,231,123],[123,123,342,3456143,2,25]))
[[123, 123], [1234, 123], [231, 342], [123, 3456143]]
#map()后面可以接受多个序列作为参数