python函数

python函数,第1张

函数的作用

函数就是将一段有独立功能的代码块整合到一个整体并命名,在需要的位置调用这个名称即可完成对应的要求

函数在开发过程中,可以高效的实现代码重用

函数的使用步骤

先定义,后调用。

定义函数

def 函数名(参数):

        代码1

        代码2

        .........

调用函数

函数名(参数)

注意:不同的需求,参数可有可无。

在python中,函数必须先定义后使用

函数的参数作用
def add_num2(a,b):
    result = a+b
    print(result)

add_num2(10,20)

a,b形参,传入的数据是实参

函数参数的四种写法

位置参数

调用函数时根据函数定义的参数位置来传递参数

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

user_info('Tom','22','男')

注意:传递和定义参数的顺序以及个数必须一致,否则数据无意义

关键字参数

函数调用,通过 键=值 形式加以指定。可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求

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

user_info('小明',age=20,gender='男')

注意:函数调用时如果有位置参数时,位置参数必须在关键字参数的面前,但关键字参数之间不存在先后顺序。

缺省参数

缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)

def user_info(name,age,gender='男'):
    print(f'您的名字是{name},年龄是{age},性别是{gender}')

user_info('Tom',20)

注意:函数调用时,如果为缺省参数传一个新值则修改默认参数值;否则使用这个默认值

不定长参数

不定长参数也叫可变参数。用于不确定调用的时候会传递多少个参数(不传参也可以)

的场景。此时,用包裹位置参数,或者包裹关键参数,来进行参数传递,会显得非常方便

包裹位置传递

def user_info(*args)
    print(args)

user_info('Tom')
user_info('Tom',18)

 注意:所有传进的参数都会被args变量手机,它会根据传进参数的位置合并一个元组,*argss是元组类型,这就是包裹位置传递

包裹关键字传递

def user_info(**kwargs)
    print(kwargs)


user_info(name='Tom',age=18,id=123)
#{'name':'Tom',age=18,'id':123}

综上:无论是包裹位置传递还是包裹关键字传递,都是一个组包的过程

函数的返回值作用
def buy():
    return '烟'
    goods = buy()
    print(gooods)

注意:做计算时要用到return返回值返回计算后的结果

return的作用:

复制函数返回值

退出当前函数:导致return下方所有代码(函数体内部)不执行

 函数的返回值作为参数传递

def test1():
    return 50
def test2(num):
    print(num)
result = test1()
test2(result)

一个函数要有多个返回值

def return_num():
    return 1,2
result = return_num()
print(result)

注意:

return a,b 写法,返回多个数据的时候,默认是元组类型

return后面可以连接列表、元组或字典,以返回多个值

函数的说明文档

定义函数的说明文档

def 函数名(参数):
    """说明文档的位置"""
    代码
    .....

help(函数名)

查看函数的说明文档

函数嵌套调用

 一个函数里面又调用了另外一个函数

def print_line():
    print('_'*20)

def print_lines(num):
    i = 0
    while i < num:
        print_line()
        i += 1

print_lines(5)
def sum_num(a,b,c):
    return a + b + c

result = sum_num(1,2,3)

def average_num(a,b,c):
    sumResult = sum_num(a,b,c)
    return sumResult / 3

averageResult = average_num(1,2,3)
print(averageResult) 
变量作用域

 变量作用域指的是变量生效的范围,主要分为两类:局部变量和全局变量

局部变量

是定义在函数体内部的变量,即只在函数体内部生效

def testA():
    a = 100
    print(a)
testA() #100
print(a)#报错

 变量a是定义在testA函数内部的变量,在函数外部访问则立即报错

局部变量的作用:在函数体内部,临时保存数据,当函数调用完成时,即销毁局部变量

全局变量

 是在函数体内、外都能生效的变量

 

a = 100

def testA():
    ...
    ...

修改全局变量可以在函数内直接定义它在函数中的变量

def test1():
    return 50
def test2(num):
    print(num)
result = test1()
test2(result)
拆包和交换变量值

拆包:元组

def return_num():
    return 100,200

num1,num2 = return_num()
print(num1) #100

print(num2)#200

拆包:字典

dict1 = {'name':'Tom','age':18}
a,b = dict1
#对字典进行拆包,取出来的是字典的key
print(a) #name
print(dict1[a])#Tom

交换变量值

假如有变量a = 10 和b = 20,交换两个变量的值

方法一:借助第三变量存储数据

c = 0
c = a
a = b
b = c

方法二

a,b = 1,2
a,b = b,a
print(a) #2
print(b) #1
引用

结论:在python中,值是靠引用来传递来的

可以用id()来判断两个变量是否为同一个值的引用。id值理解为那块内存的地址标识

.......

.......

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/917234.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存