python入门之函数

函数的定义

1、什么是函数

函数就是一种工具,可以重复调用。

2、为什么要用函数

  • 防止代码冗余
  • 代码可读性差

3、怎么用函数

通过 def (define)关键字定义函数---> 制造工具

调用函数 ---> 使用工具

def 函数名():
    '''
    函数的注释,描述函数体代码的功能
    '''
    代码块1
    代码块2
 
函数名()  # 使用函数
# 定义函数(制造工具)
def index():  # index变量名
    print('你好,函数!')  # 代码块
 
index()  # index访问函数的内存地址,括号是调用的意思

4、函数名的命名规范

函数名的命名规范与变量名一样

5、函数的分类

  • 有参函数
    • def index(user, pwd):
  • 无参函数
    • def index():
  • 空函数
    • def index():
    • pass

6、函数的调用

函数先定义后执行,不调用函数,就不会执行函数体代码,只会检测函数体代码的语法规范性

index()
 
index(name, pwd)  # 传入参数执行
 
index(1, index(3, 2))  # 先执行里面的index

二、return

return:是一个函数结束的标志,函数体代码只要执行到return,函数执行结束

  • 不写return,默认返回none

  • 只写return,只有结束函数体代码的效果,返回none

  • 写return none,与只写return的效果相同

  • return返回一个值:可以将返回的结果,当做一个变量值来使用

  • return返回多个值

    • 将返回的多个值,默认存入元组返回
    • 函数的返回值不想被修改
    • 可以自己指定返回的数据类型

三、函数的参数

3.1 参数的类型

3.1.1 形参

是在函数定义阶段就规定的参数,相当于定义变量时的变量名

3.1.2 实参

是在函数调用阶段传入的参数,相当于定义变量时的变量值

def index(a):  # 形参:a相当于变量名,用来接收变量值
    print(a)
 
index(a)  # 实参:相当于变量值,将值传入形参

3.2 传参方式

3.2.1 位置参数:

通过位置进行传参

def index(a, b):
    print(a, b)
 
index(1, 3)  # 位置参数

3.2.2 关键字参数

指定关键字传参

def index(a, b):
    print(a, b)
 
index(a=1, b=3)  # 关键字参数

3.2.3 位置参数和关键字参数混用

  • 位置参数一定要写在关键字参数之前

  • 连用的时候,不要对同一个形参重复赋值

def index(a, b, c, d):
    print(a, b, c, d)
 
index(1, 2, c=3, d=4)  # 位置参数和关键字参数混用
# 定义在* 和**之间
# 在给命名关键字传值的时候一定要以关键字形式传递
# 关键字参数一定不能放在位置参数前面
def index(x, y, z, a=1, *args, b, **kwargs):
    print(x, y, z)
    print(args)
    print(a, b)
    print(kwargs)

index(1, 2, 3,354353, 4342, 3213123, b=222, c=333, d=444)

3.2.4 默认参数

默认参数:

  • 在定义函数阶段就已经传入参数
  • 如果在实参的时候传入了一个新的参数,就会使用新参数
  • 默认参数在传值的时候,不要将可变类型当做参数传递

应用场景:

  • 当参数对应值重复出现的情况下使用默认参数
def reg(username, password, gender):
    print(f'用户名:{username} 密码:{password} 性别:{gender})
 
 
reg('tank', 'dsb', 'male')
reg('jason', 'dsb', 'male')
reg('engon', 'dsb', 'male')
 
 
# 将gender的实参定义为male
def reg(username, password, gender='male'):
    print(f'用户名:{username} 密码:{password} 性别:{gender})
 
 
reg('tank', 'dsb')  # 默认为male
reg('jason', 'dsb')
reg('engon', 'dsb')
reg('胡晨阳', 'dsb', 'female')  # femal会去修改male,为femal

4 可变长参数

官方规定使用*args,但是只要有*就有可以有变长参数的效果

可变长参数:

  • *args 接收所有溢出的位置参数
    • 接收的值都可以被存入一个元组
  • 形参的值前面有*可以打散传入的容器类型
    • 打散字典只能返回key
  • **kwargs :接收所有溢出的关键字参数
    • 接收的值都被存入一个字典
# 位置参数
def index(a, b, c, d, *args):
    print(a, b, c, d, *args)
 
index(1, 3, 4, 5, 6, 7, 8, *[8, 9])
 
# 关键字参数
def index(a, b, c, d, **kwargs):
    print(a, b, c, d, *kwargs)
 
index(1, 3, c=4, d=5, e=6)
我来评几句
登录后评论

已发表评论数()

相关站点

热门文章