第三章-函数

 定义与用途

def 函数名(传入参数):
    函数体
    return 返回值

先定义函数,后调用函数
参数、返回值不需要可以省略

一般来说,要重复的写一段代码,可以将其写成函数

举个例子,我们要判断一系列数是否达到一定条件,可以使用函数

# 函数的定义
def check(num):
    print("欢迎,请输入体温")
    if num <= 37:
        print(f"体温是{num}度,请进")
    else:
        print(f"体温{num}度,需要隔离")
# 函数的使用
check(36)
check(37)
check(37.5)
check(36.8)

就不用一遍遍的书写判断语句了 。

返回值

与Java和C语言相比,我认为Python的函数很便捷,因为不用定义函数返回值的类型,也就是说,这种写法在Python中是可行的

def add(a, b):
    if a > 5:
        result = a + b
        return result
    else:
        return False

print(f"{add(10, 20)}")
print(f"{add(3, 20)}")

None

None用于声明没有初始内容的变量,没有return语句则默认返回None,None可以看作False

def say():
    print("hello")

result = say()
print(result)
print(type(result))

def check(age):
    if age > 8:
        return "Success"
    else:
        return None

result = check(6)
if not result:
    print("不可进入")

# None用于声明无初始内容的变量
# 无return则None
# None 可以看作 False

文档说明

在老wolf参与的实际项目开发中,对于函数的参数常常有一个文件说明,例如:

def select(a, b, c):
    """
    
    :param a: 
    :param b: 
    :param c: 
    :return: 
    """

这样就能让参与项目的朋友看明白这几个参数分别是什么意思

以PyCharm专业版举例,在打出def select(a,b,c):后换行,再打三次"再换行就可以自动生成一个文档说明。

嵌套

def fun_b():
    print("2")

def fun_a():
    print("1")
    fun_b()
    print("3")

fun_a()

运行结果为

1

2

3

作用域

def a():  
    num = 100  
    print(num)  
  
a()  # 输出: 100  
# 出了函数就无法使用 num  
  
def b():  
    global good  
    good = 200  
    print(good)  
  
b()  # 输出: 200  
print(good)  # 输出: 200

应用举例

money = 500000
name = None

name = input("请输入您的姓名")
def query(show_header):
    if show_header:
        print("查询余额")
    print(f"{name},您好,您的余额剩余{money}元")

def saving(num):
    global money
    money += num
    print(f"{name},您好,您存款{num}元成功")

    query(False)

def get_money(num):
    global money
    money -= num
    print("取款")
    print(f"{name},您好,您取款{num}元成功")

    query(False)

def main():
    print("主菜单")
    print(f"{name},您好,欢迎来到银行ATM,请操作:")
    print("查询余额\t【输入1】")
    print("存款\t\t【输入2】")
    print("取款\t\t【输入3】")
    print("退出\t\t【输入4】")
    return input("请输入您的选择")

while True:
    keyboard_input = main()
    if keyboard_input == "1":
        query(True)
        continue
    elif keyboard_input == "2":
        num = int(input("请输入想存入的钱:"))
        saving(num)
        continue
    elif keyboard_input == "3":
        num = int(input("您想要取出多少钱:"))
        get_money(num)
        continue
    else:
        print("程序退出了")
        break

多返回值

def test():
    return 1, 2, True
x, y, z = test()
print(x)
print(y)
print(z)

多种传参方式

其中要特别说明的是,Python支持不定长数量的参数传入

def user(name, age, gender):
    print(f"您的名字是{name},年龄是{age},性别是{gender}")

# 关键字传参
user(name="fhl", age="21", gender="male")
# 可以不按顺序
user(age=21, gender="male", name="fhl")
# 可以和位置参数混用,位置参数必须在前,且匹配参数顺序
user("fhl", 21, "male")

# 默认值必须在最后
def haha(name, age, gender="male"):
    print(f"您的名字是{name},年龄是{age},性别是{gender}")

# 位置传递
def info(*args):
    print(args)

info('fhl')
info('fhl', 21)
info(21, 'fhl')

# 关键字传递
def le(**kwargs):
    print(kwargs)

le(name='fhl', age=21, id=212062074)

# 不定长-位置不定长
# 不定长定义的形式参数会作为元组存在,接收不定长数量的参数传入
def hahaha(*args):
    print(f"args参数类型是:{type(args)},内容是{args}")

hahaha(1, 2, 3, '小明', 'male')

# 不定长-关键字不定长
def hahahaha(**kwargs):
    print(f"args参数类型是:{type(kwargs)},内容是:{kwargs}")
hahahaha(name='小明',gender='男',addr='北京',id=212)

匿名函数

# 函数作为参数传递
def test(compute):
    result = compute(1, 2)
    print(type(compute))
    print(result)
def compute(x, y):
    return x + y
test(compute)
# 这叫代码的执行逻辑的传入

lambda匿名函数

def test(compute):
    result = compute(1, 2)
    print(result)
test(lambda x, y: x + y)
# lambda 传入参数:函数体(一行代码)
# lambda没有办法写多行
# 写一次只能用一次
def add(x, y):
    return x + y
test(add)

test(lambda x, y: x + y)
# 用于临时构建一个函数,只用一次的场景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值