python函数

目录

    • 函数
      • 1.函数的创建
      • 2.函数的参数传递
        • 2.1 位置实参
        • 2.2 关键字实参
        • 2.3 传递的内存分析
      • 3.函数的返回值
      • 4.函数的参数定义
      • 5.函数的参数总结

函数

  • 函数就是执行特定任务以完成特定功能的一段代码。

1.函数的创建

def 函数名([输入参数]):
	函数体
	[return xxx]

2.函数的参数传递

2.1 位置实参
  • 根据参数对应的位置进行实参传递
2.2 关键字实参
  • 根据形参名称进行实参传递
def calc(a, b):  # a,b为形式参数(形参),形参的位置在函数的定义处
    print('a=',a)
    print('b=',b)
    c = a + b
    return c

ans = calc(10, 20) # 10,20为实际参数的值(实参),实参的位置就是函数的调用处
print(ans)

res = calc(b = 13, a = 15)  # 左侧的变量名为关键字参数
print(res)

'''
a= 10
b= 20
30
a= 15
b= 13
28
'''
2.3 传递的内存分析
  • 在函数调用过程中,进行参数的传递
  • 如果是不可变对象,在函数体的修改不会影响实参的值:arg1的修改为100,不影响n1的值
  • 如果是可变对象,在函数体的修改会影响到实参的值:arg2的修改,append(10),会影响到n2的值
def fun(arg1, arg2):
    print('arg1', arg1)  # arg1 11
    print('arg2', arg2)  # arg2 [22, 33, 44]
    arg1 = 100
    arg2.append(10)
    print('arg1', arg1)  # arg1 100
    print('arg2', arg2)  # arg2 [22, 33, 44, 10]

n1 = 11
n2 = [22, 33, 44]
print('n1', n1)  # n1 11
print('n2', n2)  # n2 [22, 33, 44]
fun(n1, n2)
print('n1', n1)  # n1 11
print('n2', n2)  # n2 [22, 33, 44, 10]

3.函数的返回值

  • (1)如果函数没有返回值【执行完毕之后,不需要给调用处提供数据处理】,return可以省略不写
  • (2)函数的返回值,如果是1个,直接返回类型
  • (3)函数的返回值,如果是多个,返回的结果为元组
def fun1():
    print("world")
fun1()  # world

def fun2():
    return 'hello'
print(fun2())  # hello

def fun3():
    return 'hello', 'world'
print(fun3())  # ('hello', 'world')

4.函数的参数定义

  • 函数定义时,给形参设置默认值,只有与默认值不符的时候才需要传递实参
def fun(a, b = 10):  # b成为默认参数
    print(a, b)

fun(100)  # 100 10
fun(20, 30)  # 20 30
  • 个数可变的位置参数
    • 定义函数时,可能无法事先确定传递的位置实参的个数,使用可变的位置参数
    • 使用*定义个数可变的位置形参
    • 结果为一个元组
def fun(*args):  # 函数定义时,可变的位置参数
    print(args)

fun(10)  # (10,)
fun(10,20)  # (10, 20)
  • 个数可变的关键字形参
    • 定义函数时,可能无法事先确定传递的关键字实参的个数时,使用可变的关键字形参
    • 使用**定义个数可变的关键字形参
    • 结果为一个字典
def fun(**args):  # 函数定义时,可变的位置参数
    print(args)

fun(a = 10)  # {'a': 10}
fun(a = 10,b = 20, c = 30)  # {'a': 10, 'b': 20, 'c': 30}
  • 错误类型
'''
def fun1(*args, *a):
    pass
    以上代码,程序会报错,可变的位置参数,只能是1个
'''

'''
def fun2(**args, **a):
    pass
    以上代码,程序会报错,个数可变的关键字参数,只能是1个
'''

def fun3(*args1, **args2):
    pass

'''
def fun4(**args1, *args2):
    pass
    在一个函数的定义过程中,既有个数可变的关键字形参,也有个数可变的位置形参
    要求:个数可变的位置形参,放在个数可变的关键字形参之前
'''

5.函数的参数总结

序号 参数的类型 函数的定义 函数的调用 备注
1 位置参数
将序列中的每个元素都转换为位置参数 使用*
2 关键字实参
将字典中的每个键值对都转换为关键字实参 使用**
3 默认值参数
4 关键字形参 使用*
5 个数可变的位置形参 使用*
6 个数可变的关键字形参 使用**

你可能感兴趣的:(python基础,python,开发语言)