个人认为,函数的优点在于复用性,于多次调用时会显得极其简易,压缩代码整洁思路
我对于函数的概念,仍旧停留在学习Java时残留的记忆里,觉得仅仅调用一次时创建函数实在是蠢爆了
然而Python3中,函数的动态参数及默认参数确实是较为简便的,运用得当会省略大量的代码
于Python3中,定义函数应以 def 定义/申明,我个人比较喜欢定义一词。
def 函数名 (参数/也可空):
调用函数则需选择函数名()其中的函数名是函数的内存地址,而()是调用的关键
函数名()
def inner(): #定义名为inner的函数 print(666) #这个函数作用即打印666 inner() #调用函数 inner inner为函数内存地址,()表调用
我们将函数()中的称之为形参,具体叫什么忘了,但大家都说它是形参emmm
同上,调用函数时函数的()内的称之为实参,带*或**的为动态参数,可接受复数的值,*返回值为元组形式,**返回值为字典形式(相对应的,被赋予的值也应是键值对形式的)
形参是由自己定义的参数,仅在函数体内部生效,与实参相互照应,于此处也有*与**方法,均为打散,其中**会将字典打散为键值对,*打散为键
def wrapper(a): #这里的a便是形参,随意定义的 a+=1 #函数体 wrapper(6) #实参,向形参赋予的数据
有趣的三元运算符 与 return
简化 if else判断,适用范围有限是其的缺陷,能也仅能简化 if else
而 return 于函数中相当于程序中的 quit()方法,其存在便是为了结束函数,并返回内容,无添加下默认返回None
def function(*args): return args[0] if args[0]<args[-1] else args[-1] print(function(7,8))
global
global是函数中的一个关键字,其作用便是 当函数中使用却找不到某一元素时,对函数外的全局部分搜索该元素并调用,无结果时会生成,但如若生成后未能为其赋值,就直接参与运算,则会报错,当已有元素时也会报错
nonlocal
同上nonlocal也是函数关键字,会在局部(函数体)空间内逐层寻找元素,未能找到会报错,当已有元素时也会报错
a = 1 def wrapper(): def inner(): global a a += 1 print(a) inner() wrapper() def wrapper(): a = 1 def inner(): nonlocal a a += 1 print(a) inner() wrapper()
三元运算符
仅能简化表述 if: else:
例:sex= '男' if name=='神秘海螺' else: '女'
匿名函数
关键字lambda定义的,不需要命名的,匿名函数限制仅一行内容,无法表述过于复杂的逻辑
高阶函数
定义上,以某一函数(包含匿名函数)为参数的函数即为高阶函数,高阶函数内内置了for循环,省去一步for循环的同时也大大限制了逻辑表达
个人表示大多数情况下,完全可以用推导式取代高阶函数
推导式
而关于推导式,用来查看一个包/类/数据类型的具体操作方法:
[x for x in dir(str) if not x.startswith('_')]
就是一个推导式,其中x为返回结果,之后为逻辑语句