python基础 - 10、函数(参数、全局变量、局部变量、匿名函数、实参高阶函数、装饰器、迭代器、生成器、模块))

python语法基础 - day9~12 函数

在这里插入图片描述

1、函数定义和调用

1)定义

函数是实现一个特定功能的代码的封装

2)语法

def 函数名(形参):
说明文档
代码块

3)调用

函数名(实参)
调用时:实参的个数要和形参一致(有默认值的情况除外)

# 练习1:定义一个函数,求n的阶乘(factorial = n! = n*(n-1)*(n-2)...*1

# 函数的定义
def factorial(n):
    """
    求n的阶乘
    :param n: 提供一个指定的数值n
    :return: None
    """
    f = 1
    for x in range(1, n+1):
        f *= x
    print(f)


# 调用函数
factorial(10)  # 3628800

2、函数的参数

函数参数是将外部数据(实参)传入函数内部的入口或通道

1)位置参数和关键字参数
a.位置参数

调用时,形如函数名(实参1, 实参2, 实参3, ...),这里的参数就是位置参数,位置参数实参与形参一一对应,位置不能随意更换

def func1(a, b, c):
    print(f'a:{
     a}, b:{
     b}, c:{
     c}')
func1(10, 20, 30)  # a:10, b:20, c:30
b.关键字参数

调用时,形如函数名(形参1=实参1, 形参2=实参2, 形参2=实参3, ...),这里的参数就是关键字参数,参数的位置可以随意更换

def func1(a, b, c):
    print(f'a:{
     a}, b:{
     b}, c:{
     c}')
func1(c=10, a=20, b=30)  # a:20, b:30, c:10

注意:

位置参数和关键字参数同时存在时,位置参数在前,关键字参数在后。只要保证位置参数在前,后面的关键字参数之间可以更换位置

def func1(a, b, c):
    print(f'a:{
     a}, b:{
     b}, c:{
     c}')
func1(10, c=20, b=30)  # a:10, b:30, c:20
2)参数的默认值

参数默认值是在定义函数时给形参赋值,在调用函数时,有默认值的参数可以不用传值,有默认值的参数要在没有默认值参数的后面

def func1(a, b, c=100):
    print(f'a:{
     a}, b:{
     b}, c:{
     c}')
func1(10, 20)  # a:10, b:30, c:20
3)定长和不定长参数
a.定长参数

参数的个数是确定的

b.不定长参数 - 带*、带**

* - 在形参前面加*,让形参变成不定长参数,可以同时接受多个实参,这个参数的本质是一个元组,传递的每个实参都变成这个元组的元素 (必须使用位置参数)

def func1(*args):
    print(f'args的值:{
     args}, 类型:{
     type(args)}')
func1(10, 20, 30)  # args的值:(10, 20, 30), 类型:<class 'tuple'>

** - 在形参前面加**,让形参变成不定长参数,可以同时接受多个实参,这个参数本质是一个字典**(只能使用关键字参数)**

def func1(**kwargs):
    print(f'kwargs的值:{
     kwargs}, 类型:{
     type(kwargs)}')
func1(a=10, b=20, c=30)  # kwargs的值:{'a': 10, 'b': 20, 'c': 30}, 类型:<class 'dict'>

3、函数的返回值

1)什么是返回值 - 出口

从函数内部传递到函数外部的数据

2)如何确定函数返回值

每个函数都有返回值,返回值是什么就看return后面跟的是什么(没有return返回值就是默认值None)

def f1():
    return [1, 2]
# append()也是一个函数,一个返回值为None的函数,而result实际上是在获取append()的返回值
result = f1().append(200)
print(result)   # None

# 这个才是在获取添加元素后的列表
l1 = f1()
l1.append(200)
print(l1)   # [1, 2, 200]

return的作用:遇到return会确定返回数据并结束函数

3)怎么在函数外部获取返回值

函数调用表达式的值就是函数的返回值,所以获取函数调用表达式的值就是在获取函数的返回值

def func2(a, b):
    return a*b

result1 = func2(33, 79)
print(f'result1:{
     result1}')  # result1:2607

注意:

函数只有一个返回值,形如return a, b, c 这种,返回值也只有一个,只不过这个返回值是一个容器/序列

def f(a, b):
	return a+b, a-b, a*b, a/b

print
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值