• 函数定义、返回值、函数参数


    函数的定义

    什么是函数

    函数就是一种具备某一功能的工具,事先将工具准备好就是函数的定义,遇到场景拿来就用。

    怎么使用函数

    def 函数名(等同于变量)():   # 定义函数
        """对函数的描述"""
        代码块
    
    函数名()   # 函数调用
    

    注册功能函数

    def register():
        """注册功能"""
        count = 0
        while count < 3:
            username_inp = input('请输入你的用户名:').strip()
            pwd_inp = input('请输入你的密码:').strip()
            re_pwd_inp = input('请再次确认你的密码:').strip()
    
            if re_pwd_inp != pwd_inp:
                print('两次密码输入不一致!')
                count += 1
                continue
    
            with open('userinfo.txt', 'a', encoding='utf-8') as fa:
                fa.write(f'{username_inp}:{pwd_inp}
    ')
                print('注册成功')
                break
                
    register()
    

    登录功能函数

    def login():
        """登录功能"""
        username_inp = input('请输入你的用户名:').strip()
        pwd_inp = input('请输入你的密码:').strip()
    
        user_info = f'{username_inp}:{pwd_inp}'
    
        with open('userinfo.txt', 'r', encoding='utf-8') as fr:
            data = fr.read()
            user_info_list = data.split('
    ')
    
            if user_info in user_info_list:
                print('登录成功')
            else:
                print('登陆失败')
    
    login()
    
    

    函数的定义的三种形式

    空函数

    定义了一个函数,但啥都没有

    def func():
        pass
    

    有参函数

    def add(x, y):
        """有参函数"""
        print(int(x) + int(y))
    
    add(1, 2)
    

    无参函数

    def func():
        print('hello world')
    

    函数的调用

    使用函数名()的形式就可以调用函数了

    def func(x, y):
        """给定两个数, 打印较大的数"""
        if x > y:
            print(x)
        else:
            print(y)
    
    print(func)
    func(10, 20)   # 加括号就能调用(执行内存中的代码)
    
    # 打印结果:
    <function func at 0x00000253DFEF0950>   # 函数的地址
    20
    

    函数的返回值

    return 返回一个值

    def add(x, y):
        return x + y
    
    
    
    res = add(1, 2)
    print(res)
    
    # 打印结果
    3
    

    return没有返回值,默认返回None

    def add(x, y):
        print(x, y)
        # return x + y
    
    
    
    res = add(1, 2)
    print(res)
    
    # 打印结果:
    1 2
    None
    

    return可以返回多个值,可以返回任意数据类型,默认用元组形式返回

    def add(x, y):
        print(2)
        return x, y, x + y
    
    
    res = add(1, 2)
    print(res)
    
    # 打印结果:
    2
    (1, 2, 3)
    

    return会终止函数,不运行下面的代码,即使有多个return,只会执行第一个return,不会执行下一个

    def add(x, y):
        print(2)
        return x, y, x + y    # 遇到return就会终止函数
        print('hello world')
        return x
    
    
    res = add(1, 2)
    print(res)
    
    # 打印结果:
    2
    (1, 2, 3)
    

    函数的参数

    形参和实参

    形参

    在函数定义阶段括号内定义的参数,称之为形式参数,简称形参,本质上就是变量名

    def func(x, y):
        print(x)
        print(y)
    

    实参

    在函数调用阶段括号内传入的参数,称之为实参

    func(1, 2)
    

    位置参数

    位置形参

    在函数定义阶段,按照从左往右的顺序依次定义的参数,称之为位置形参

    def func(x, y):
        print(x)
        print(y)
    

    位置实参

    在函数调用阶段,按照从左往右的顺序定义的参数,称之为位置实参,依次传值给位置形参

    func(1, 2)
    

    默认形参

    在函数定义阶段,就已经被赋值

    def func(x, y=10):
        print(x)
        print(y)
    
    func(2)
    
    • 在定义阶段就已经赋值,在调用时可以不用传值;如果传值,就使用传的值
    • 默认形参必须在位置形参之后

    关键字实参

    在调用函数时,按照位置形参名传值

    func(y=2, x=1)
    

    关键字实参必须在位置实参后面

    可变长参数

    可变长形参之*

    形参中的*会将溢出的位置实参全部接收,然后存储元组的形式,然后把元组赋值给*后的参数。需要注意的是:*后的参数名约定俗成为args。

    def f1(*args):
        print('args:', args)
    
    
    f1(1, 23, 4)  # args接收位置实参多余的参数
    
    # 打印结果:
    args: (1, 23, 4)
    

    可变长形参之**

    '''
    形参中的**会将溢出的关键字实参全部接收,然后存储字典的形式,然后把字典赋值给**后的参数。需要注意的是:**后的参数名约定俗成为kwargs。
    '''
    
    def f2(a,**kwargs):
        print('kwargs:', kwargs)
    
    
    f2(x=12, a=10, b=9)    # kwargs接收关键字实参多余的参数
    
    # 打印结果:
    kwargs: {'x': 12, 'b': 9}
    

    可变长实参之*

    def func1(a,b,c,d):
        print(a,b,c,d)
    
    lt = [1,2,3,4]
    func1(*lt)     # *lt列表中的元素打散成位置实参依次传给位置形参
    

    可变实参之**

    def func(a, b):
        print(a, b)
    
    
    dic = {'a': 1, 'b': 2}
    func(**dic)               # **dic把字典打散成关键字实参然后传给函数func
    
  • 相关阅读:
    Requests接口测试(五)
    Requests接口测试(四)
    Requests接口测试(一)
    软件测试杂谈(学习思路、学习方法、面试技巧、后期发展、职业规划等)
    Requests接口测试(三)
    Requests接口测试(二)
    Python基础入门-列表解析式
    Python基础入门-集合
    Jmeter接口测试-完成任务API
    Jmeter接口测试-基于nodejs的to do list项目说明
  • 原文地址:https://www.cnblogs.com/setcreed/p/11566627.html
Copyright © 2020-2023  润新知