函数
什么是函数
定义一个事情或者是功能,等到需要的时候直接去用就好了.那么这里定义东西就是一个函数
函数:对代码块和功能的封装和定义
函数的定义
def 函数名():
函数体
我们使用def关键字来定义函数,函数的定义语法,这里的函数名的命名规则和变量的命名规则一样.自己回顾一下变量的命名规则
函数体:就是函数被执行之后要执行的代码
函数的调用
函数名后面加小括号 写法:函数名()
def ma(name,age,addr): #调用约参 print(f"{name},{age},{addr}")
ma('啊啊','三四','打') #调用实参
函数的执行流程
想要约几次只需要
make()
make()
make()
函数的返回值
函数执行完之后可以return来返回结果
def make(): print("约") print("约") print("约") return print("约") #这句话不会被执行
函数中遇到return,此函数结束.不在继续执行
return有返回值,这个返回值返还给了函数调用者
def make(): print("约") return '美女' age = make() print(age)
加上返回值后的流程
1.定义了一个函数make 2.调用函数 3.执行函数里的约你 4.执行函数里的约我 5.执行函数里的约他 6.返回给调用者一个字符串'美女一枚',这个调用者就是make() 7.将返回的字符串通过一个等号赋值给白变量girl 8.打印变量girl的值
可以返回多个值
def make(): print("约") return '美女','丑男' age = make() print(age)
总结:
1.遇到return,此函数结束,函数后面的东西将不会在执行
2.return 返回值
关于返回值:
如果return什么都不写或者干脆就没写return,返回的结果就是None
如果return后面写了一哥值,则调用者可以接受一个结果
如果return后面写了多个结果,则调用者可以接受一个tuple,调用者可以直接使用解构获取多个变量
函数的参数
参数,也就是函数括号里的内容 函数在调用的时候指定一个具体的变量的值 就是参数.写法如下:
def 函数名(参数)
函数体
参数
1.形参
写在函数声明的位置的变量叫形参,形式上的一个完整.表示这个函数需要xxx
2.实参
在函数调用的时候给函数传递的值.加实参,实际执行的时候给函数传递的信息.表示给函数xxx
3.传参
给函数传递信息的时候将实际参数交给形式参数的过程被称为传参.
# 参数的顺序: 位置参数 > 默认参数(关键字参数),在默认参数前边写位置参数
# 传参: 从实参到形参的过程
# 函数的参数:
# 形参: 定义的时候
# 位置参数
# 默认参数
# 混合参数
# 实参: 调用的时候
# 位置参数
# 关键字参数
# 混合参数
参数分类
1:位置参数
def make(chat,adder,age): print("拿出手机") print("打开"+chat) print("这个"+adder+"附近漂亮的"+str(age)+"岁妹妹") print("约不") make("QQ","北京",18) 答: 拿出手机 打开QQ 这个北京附近漂亮的18岁妹妹 约不
例子:
def f(a,b): if a>b: return '大于' else: return '小于' print(f(2,3))
答:
小于
三元运算符
def f(a,b): c = a if a > b else b #当a>b就把a赋值给c,否则就把b赋值给c return c msg = f(2,3) print(msg)
关键字参数:
位置参数好不好呢? 如果是少量的参数还算OK, 没有问题. 但是如果函数在定义的时候参数非常多怎么办? 程序员必须记住, 我有哪些参数, 而且还有记住每个参数的位置, 否则函数就不能正常调用了. 那则么办呢? python提出了一种叫做关键字参数. 我们不需要记住每个参数的位置. 只要记住每个参数的名字就可以了
def make(chat, address, age): print("拿出手机") print("打开"+chat) print("找个"+address+"附近漂亮的"+str(age)+"岁妹子") print("约不约") make(chat="微信", age=18, address="北京") # 关键字参数. 结果: 拿出手机 打开微信 找个北京附近漂亮的18岁妹子 约不约
混合参数:
可以把上面两种参数混合着使用. 也就是说在调用函数的时候即可以给出位置参数, 也可以指定关键字参数.
# 混合参数 <br>make("微信", age=18, address="上海")# 正确.第一个位置赋值给chat, 后面的参数开始指定关键字. make(age="18", "微信", address="广州") # 错误, 最开始使用了关键字参数, 那么后面的 微信的位置就串了, 容易出现混乱
注意: 在使用混合参数的时候, 关键字参数必须在位置参数后面
综上: 在实参的⾓角度来看. 分为三种:
1. 位置参数
2. 关键字参数
3. 混合参数, 位置参数必须在关键字参数前面
位置参数:
位置参数,按照位置来赋值,到目前为止,我们编写的函数都是这种
def make(chat, address, age): print("拿出手机") print("打开"+chat) print("找个"+address+"附近漂亮的"+str(age)+"岁妹子") print("约不约")
默认值参数:
在函数声明的时候, 就可以给出函数参数的默认值. 在调用的时候可以 给出具体的值, 也可以不给值, 使⽤用默认值. 比如, 我们录入咱们班学生的基本信息. 通过调查发现. 我们班大部分学生都是男生. 这个时 候就可以给出⼀一个sex='男'的默认值.
def stu_info(name, age, sex='男'): print("录入学生信息") print(name, age, sex) print("录入完毕") stu_info("张强", 18)
注意:必须先声明在位置参数,才能声明关键字参数
综上:在形参的角度来看
1. 位置参数
2. 默认值参数(大多数传进来的参数都是一样的, 一般用默认参数)
在实参的角度来看
1.位置参数 就是按照顺序传递
2.默认值参数(在填写参数的时候需要指定传递到形参中那个变量)
函数名的使用及第一类对象
函数名的运用
函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量
1.函数名的内存地址
def func(): print("呵呵") print(func) 结果: <function func at 0x1101e4ea0>
2. 函数名可以赋值给其他变量
def func(): print("呵呵") print(func) a = func # 把函数当成一个变量赋值给另一个变量 a() # 函数调用 func()
3. 函数名可以当做容器类的元素
def func1(): print("呵呵") def func2(): print("呵呵") def func3(): print("呵呵") def func4(): print("呵呵") lst = [func1, func2, func3] for i in lst: i()
4. 函数名可以当做函数的参数
def fun(): print("吃了吗") def fun2(fn): print("我是fun2") fn() #执行过来传递来的fn print('我是func2') fun2(fun) #把函数fun当成参数传递给了fun2的参数fn
5. 函数名可以作为函数的返回值
def fun_c1(): print("这里是函数1") def fun_c2(): print("这里是函数2") print("这里是函数1") return fun_c2 fn = fun_c1() # 执行函数1,函数1返回的是函数2,这时fn指向的就是上面的函数2 fn() #执行上面返回的函数
posted on 2019-01-08 13:46 🐳️南栀倾寒🐳️ 阅读(145) 评论(0) 编辑 收藏 举报