函数相关笔记
这次用的是ipad pro+蓝牙键盘+colaboatory 云IDE。
不得不说谷歌还是np,免费提供云ide,免费提供gpu训练深度学习模型,用safari就可以写。缺点是得全程挂vpn,而且不知道为什么无法使用简体中文输入法,只好用繁体输入法打注释。
下面是关于函数返回值的一些操作:
def func1(a):
b = a + 1
return b #遇到return意味著函數結束。在函數中return後面的代碼將不會執行
def func2(b): #返回值可以在函數之間傳遞但没法作為變量输出。
'''这里面是自定义的函数描述'''
return b+1,b+2 #函數返回多個值時只用一個return即可
a = 3
z = func2(func1(a))
print (z)
有几个点:
- 即便是函数中的代码书写有错误,只要不调用就不会报错
- 函数括号里面的东西就是形式参数。( def func2(b) 中的 b )
- 像案例那样,即使不调用函数,仍然可以得到其返回值。不知道这是个什么原理
- 函数的返回值可以在函数之间互相传递,且与函数定义的顺序无关。也就是说,上面案例中的func1和func2顺序互换之后,只要调用的顺序不变就不会有问题
- 如果存在缩进关系,一定不要忘记检查缩进附近的语句是否漏掉了冒号
- 当单个函数有多个返回值当时候,默认输出是tuple型。
- 函数第一条语句用’’’x’’’ 或者“””x”””这种格式,可以给自定义的函数作描述。可以用help(func2())在终端输出函数的描述。在vs code中鼠标悬停在函数名称上也可以显示。
下面是关于函数参数定义的几种方式:
def func1(name,age='18'):#若下面的代码对age没有赋值则按照默认值赋值,这种情况的age为缺省参数
print(f'name:{name},age:{age}')
func1('soulrn','22') #这种叫位置参数
func1(age = '22',name = 'soulrn')#这种叫关键字参数
在调用函数的时候对参数赋值的方法。关键字赋值的格式与字典类似,key = value,与赋值顺序无关。而位置参数赋值的顺序要与定义关键字的顺序一致。
def yue(*args):#不定长参数&包裹位置传递 *
print(args)
yue('soulrn','22')#tuple type
def yue2(**kwargs):#不定长参数&包裹关键字传递 **
print(kwargs)
yue2(name = 'soulrn',age = '22')#dict type
不定长参数是不确定传入函数参数数量的情况下需要使用的。包裹位置传递传入参数有顺序关系;包裹关键字传递就是key = value的格式。前者输出类型为元组,后者为字典。