一、认识函数
函数:对代码块和功能额封装和定义
语法:
def 函数名(形参):
函数体
函数名(实参) #调用函数
这里的函数名的命名规则和使用变量基本一样
函数体:就是函数被执行之后要执行的代码
下面来定义一个约x功能:
def yue(): print("拿出手机") print("打开陌陌") print("找个漂亮的妹子") print("问她,约不约啊?") print("OK,走你")
定义完了,但是这个时候去执行,会发现什么都没有发生,因为我只定义了一个函数,但是还没有执行过这个函数。
函数的调用:使用函数名可以调用函数,写法:函数名(),这个时候函数的函数体就会被执行了
# 调用yue()函数 yue() 结果: 拿出手机 打开陌陌 找个漂亮的妹子 问她, 约不约啊? oK. 走你!
如果我还想约呢?多次调用就可以了,很方便。
# 调用yue()函数 yue() yue() yue() yue() yue()
继续分析,约完了之后你需要得到一个结果吧,比如:约完得到了一个萝莉,少妇,大妈。总得有个结果,那么这个结果怎么来描述和获得呢?这个就涉及到函数的返回值的问题。
二、函数的返回
执行完函数之后,我们可以使用return来返回结果。
1.函数中遇到return,此函数结束,不再继续执行。
def yue(): print("约你") print("约我") print("约他") return print("约谁呀") # 这句话不会被执行 yue()
结果:
约你
约我
约他
2.给函数的调用者一个访问结果
def yue(): print("约你") print("约我") print("约他") return "美女一枚" girl = yue() print(girl) # 美女一枚
结果:
约你
约我
约他
美女一枚
函数的返回值可以有多个结果
def yue(): print("约你") print("约我") print("约他") return "美女一枚", "萝莉一枚" girl = yue() print(type(girl)) # tuple
总结:
1.遇到return,此函数结束,函数后面的东西将不再执行
2.return 返回值
关于返回值:
如果return什么都不写 或者 干脆不写return,那么返回的就是None
如果return后面写了一个值,则调用者可以接收一个结果
如果return后面写了多个结果,则调用者可以接收一个元组(tuple)==不可变==,调用者可以直接解构成多个变量
三、函数的参数
参数:函数在调用的时候指定具体的一个变量的值,就是参数
语法:
def 函数名(参数列表):
函数体
代码改一下:
def yue(chat): print("拿出手机") print("打开"+chat) print("找个漂亮的妹子") print("约不约") yue("陌陌") yue("微信") yue("探探")
结果: 拿出手机 打开陌陌 找个漂亮的妹子 约不约 拿出手机 打开微信 找个漂亮的妹子 约不约 拿出手机 打开探探 找个漂亮的妹子 约不约
def yue(chat): # chat 形参 print("拿出手机") print("打开"+chat) print("找个漂亮的妹子") print("约不约") yue("陌陌") # 实参 len("字符串") # "字符串"在这里就是实参 print("麻花藤") # "麻花藤"就是实参
关于参数:
1.形参
写在函数声明的位置的变量叫形参,形式上的一个完整,表示这个函数需要xxx
1.1位置参数
1.2默认值参数
1.3混合 位置 默认值
注意, 必须先声明位置参数, 才能声明默认值参数
1.4动态传参,*args, **kwargs
2.实参
在函数调用的时候给函数传递的值,叫实参,实际执行的时候给你函数传递的信息,表示给函数xxx
2.1位置参数
2.2关键字参数
2.3混合参数
注意: 在使用混合参数的时候, 关键字参数必须在位置参数后面
顺序:位置, 关键字
3.传参
给函数传递信息的时候将实际参数交给形式参数的过程被称为传参。
实参的分类:
1. 位置参数. 按照位置。 给形参赋值
2. 关键字参数. 按照形参的名字给参数赋值
3. 混合参数, 位置参数必须放在前面。 关键字参数放后面
def chi(good_food, no_good_food, drink): print("我要吃",good_food, no_good_food, drink) # chi("大米饭", "冰峰", "炸鸡") # chi(drink="哇哈哈", no_good_food="薯条", good_food="盖浇饭") chi("小米饭", "辣条", drink="可乐")
形参的分类(3大类)
1. 位置参数 按照位置来声明形参
2. 默认值参数, 当给参数传递值的时候。 默认值不起作用, 不给值。 默认值起作用. 保证你至少有个值能用
顺序: 位置参数必须放在前面。 默认值参数必须放在后面
def regist(name,sex="男", age=18): # 语法上不允许 print(name, age, sex) regist("刘伟", 22) regist("李铁帅", 27) regist("高晓燕", 18, "女") regist("李铁帅", 27) regist("李铁帅", 27) regist("李铁帅", 27) regist("李铁帅", 27) regist("李铁帅", 27)
函数:对功能或者动作的封装 登陆验证 def login(username, password): if username == 'alex' and password == "123": return True else: return False # 使用场景 name = input("请输入你的账号:") pws = input("请输入你的密码:") if login(name, pws): print("进入刘伟的空间") else: print("用户名或密码错误, 请重新登陆!")
f(x) = x + 1 f(3) = 3 + 1 = 4 def f(x): return x + 1 print(f(2)) s = "你好啊我叫塞利亚" print(len(s)) def my_len(s): count = 0 for el in s: count+=1 return count print(my_len(s))