初识函数
Posted maystar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识函数相关的知识,希望对你有一定的参考价值。
初识函数
函数的定义与调用
def 函数名():
? #函数体
? #return 返回值
函数名()
- 定义:def 关键字,空格后接函数名和():,
- 函数名:字母,数字,下划线组成,不能以数字开头
- 调用,先定义后调用
- 注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性
- 只定义不调用,一定不执行
- 函数名() #不接收返回值
- 返回值 = 函数名() #接收返回值
函数的返回值
-
没有返回值:默认返回None
-
不写return:函数内代码执行完毕自动结束
-
只写return:结束一个函数
-
return None
-
def my_len(s): #计算s的长度 i = 0 s = ‘12345‘ for k in s: i += 1 print(i) res = my_len() #函数内代码执行完毕自动结束 print(res)#没有返回值,None def func(): print(‘666‘) retuen ret = func() print(ret) #只写return,后面不写其他内容,返回None def func(): print(‘666‘) retuen None print(‘999‘) ret = func() print(ret) #返回None
-
-
返回一个值
-
可以返回任何数据类型
-
只要返回了就可以接收到
-
def my_len(s): #计算s的长度 i = 0 s = ‘12345‘ for k in s: i += 1 return i res = my_len() print(res) #5
-
-
返回多个值
-
多个返回值用多个变量接收
-
返回多个值用一个变量接收,得到一个元组
-
def func(): retuen 1,2,3 r1,r2,r3 = func() print(r1,r2,r3) #1 2 3 ret = func() print(ret) #(1, 2, 3)
-
函数的参数
- 形参,定义函数时的,变量的名字,被称为形式参数,因为在定义函数的时候它只是一个形式,表示这里有一个参数,简称形参。
- 实参,调用函数时传递的值称为实际参数,因为这个是实际的要交给函数的内容,简称实参。
-
**实参角度 **
-
位置参数
-
-
按照位置传参,从左到右,实参与形参一一对应。
-
python def compare(x,y): the_max = x if x>y else y # x= 22,y = 8 return x ret = compare(22,8) print(ret)
-
-
关键字参数
-
-
按关键字传参
-
def compare(x,y): the_max = x if x>y else y # x= 10,y = 20 return x ret = compare(y = 22,x = 8) print(ret)
-
-
混合参数
-
-
位置,关键字混合传参(必须先按照位置传参,再按照关键字传参,不能给同一个变量传多个值)
-
def compare(x,y): the_max = x if x>y else y # x= 10,y = 20 return x ret = compare(22,y = 8) print(ret)
-
-
-
形参角度
-
位置参数
-
- 必须传,且有几个参数就传几个值。
-
默认参数
-
-
不传就是用默认的参数,如果传了就用传的。(将不经常变化的值设置成默认参数)
-
默认参数的陷阱
-
def fuc(k,l = {}): l[k] = ‘sb‘ print(l) func(jim) #{‘jim‘:‘sb‘} func(tom) #{‘jim‘:‘sb‘,‘tom‘:‘sb‘} # 如果默认参数的值是一个可变数据类型, # 那么每一次调用函数的时候, # 如果不传值就公用这个数据类型的资源
-
-
动态参数
-
-
可以有0个或任意个参数
-
*args 接收的是按照位置传参的值,组成一个元组
-
**kwargs接收的是按照关键字传参的值,组成一个字典
-
def func(*args,**kwargs): print(args,kwargs) func(1,‘r‘,t,a = 12,b = 567) #(1, ‘r‘, ‘t‘) {‘a‘: 12, ‘b‘: 567} def func(*args): # 站在形参的角度上,就是给变量加上*,组合传递来的值 print(args) func(1,2,3,4,5) l = [2,7,4,1] func(*l) #站在实参的角度上,给一个序列加上*,将这个序列顺序拆散
-
-
顺序:位置参数,*args,默认参数,**kwargs
-
以上是关于初识函数的主要内容,如果未能解决你的问题,请参考以下文章
初识OpenGL 片段着色器(Fragment Shader)