Python基础(三)函数

一、函数的概念与定义格式

函数就是组织好的,可重复使用的,用来实现特定功能的代码段。好处:提高代码复用性,减少代码冗余,提高开发效率。

格式如下
def 函数名(传入参数):
    函数体
    return 返回值
def multi(num1, num2):
    return num1 + num2
    

print(multi(10, 20))

函数需要先定义后使用,参数不需要时可以省略,返回值不需要时也可以省略

二、函数的参数与返回值

1. 参数与返回值

函数参数的作用就是在函数运行时,接受外部传入的数据。函数定义的参数,我们称为形式参数,函数调用中的参数,我们称为实际参数。参数的数量不受限制,多个参数中间用逗号隔开,传参时需要一一对应。

返回值就是在函数执行完后,返回给调用者的结果。使用关键字return来返回结果。

def multi(num1, num2):
    return num1 + num2
    
result = multi(10, 20)
print(result)

2. 返回值之None类型

None作为一个特殊的字面量,用于表示空,无意义,有非常多的应用场景

def hi():
    print("hi")

# 场景一:函数无返回值时,默认返回None
result = hi()
# None
print(result)
# <class 'NoneType'>
print(type(result))

# 也可以主动返回None
def say():
    print("say")
    return None

result1 = say()
print(result1)

# 场景二:None用于if判断,等同于False。在函数中主动返回None,配合if做些逻辑判断使用
def check_age(age):
    if age > 18:
        return "success"
    else:
        return None

result2 = check_age(10)
if not result2:
    print("未成年")
else:
    print("成年人")

# 场景三:定义变量时,暂时不需要变量有具体值,可以用None来代替
name = None

三、函数的说明文档

用于解释说明函数,帮助我们理解函数的功能

def summation(a, b):
    """
    summation 函数可以接收两个参数,进行求和的功能
    :param a: 形参a表示一个加数
    :param b: 形参b表示一个加数
    :return: 返回时是两数相加的结果
    """
    result = a + b
    print(f"两数相加的和等于{result}")
    return result

# 鼠标悬停在参数位置,可以看到函数的说明文档
print(summation(2, 2))

四、函数的嵌套调用

嵌套函数就是在一个函数中调用另外一个函数。

def func_a():
    print("a-------------")

def func_b():
    print("bstart-----------")
    func_a()
    print("bend-------------")

func_b()

五、变量在函数中的作用域

# 局部变量:作用范围在函数内部,函数外部无法使用它
def func_a():
    num = 100
    print(f"num的值等于{num}")

func_a()

# 全局变量:定义在函数外部,函数内外都可以使用
age = 10
def func_b():
    print(f"年龄为{age}")

func_b()


# 全局变量在函数内直接修改是无效的,需要使用关键字 global
height = 170
def func_c():
    height = 10
    print(f"身高等于{height}")


func_c()
# 还是输出了170 所以这里函数外的height变量与函数内的不是一个
print(height)

height = 170
def func_c():
    global height
    height = 10
    print(f"身高等于{height}")

# 还是输出了170 所以这里函数外的height变量与函数内的不是一个

func_c()
print(height)

六、函数多返回值

多个返回值可以用逗号分割,直接return,并用多个变量接收

# 函数多个返回值
def my_fuc():
    return 1, "hello", True


x, y, z = my_fuc()
print(x, y, z)  # 1 hello True

七、函数多种传参方式

位置参数:根据形式参数位置来传递实际参数
关键字参数:函数调用时通过k=v形式传递参数,这时候对参数位置就没要求了
缺省参数:也叫默认参数, 默认参数在形参中的位置必须要在位置参数后面,不然会报语法错误
不定长参数:也叫可变参数,用于不确定参数个数

# 位置参数:根据形式参数位置来传递实际参数
def user_info(name, age, gender):
    print(f"姓名:{name}, 年龄:{age}, 性别:{gender}")


user_info("Tom", 20, '男')
# 关键字参数:函数调用时通过k=v形式传递参数,这时候对参数位置就没要求了
user_info(name="Tom", age=18, gender="男")
user_info(age=18, name="Tom", gender="男")
# 可以混用,但是位置参数必须要在关键字参数前面
user_info("Tom", age=18, gender="男")
# 缺省参数:也叫默认参数, 默认参数在形参中的位置必须要在位置参数后面,不然会报语法错误
def user_info(name, age, gender="男"):
    print(f"姓名:{name}, 年龄:{age}, 性别:{gender}")

user_info("Jack", 20)
user_info("Jack", 20, "女")

# 不定长参数:也叫可变参数,用于不确定参数个数
# 方式一:以*标记一个形参,以元组的形式接收参数,参数一般命名为args
def fun(*args):
    print(args)

fun(1, 2, "apple", True)  # (1, 2, 'apple', True)
# 方式二:以**标记一个形参,以字典的形式接收参数,参数一般命名为kwargs
def fu(**kwargs):
    print(kwargs)

fu(name="Jack", age=18, gender="男") # {'name': 'Jack', 'age': 18, 'gender': '男'}

八、匿名函数

# 函数作为参数传递, 作用是传入计算逻辑,而非数据
def test_fun(calculate):
    result = calculate(10, 20)
    print(result)

def calculate(x, y):
    return x + y

test_fun(calculate)

# lambda匿名函数
# def 关键字可以定义带有名称的函数,基于名称可重复使用 lambda关键字可以定义无名称的函数,只可临时使用一次
def test_function(computer):
    result = computer(100, 200)
    print(result)

test_function(lambda x, y: x + y)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值