zoukankan      html  css  js  c++  java
  • 函数基础上半部分

    一、函数的定义

    1.1 函数的定义和调用

    def 函数名():      # 定义函数阶段,不执行函数体中的代码,只检测语法错误
        """函数功能的描述"""
        <代码块>
    
    函数名()    # 调用函数阶段,这时会执行函数中的代码
    

    1.2 注册功能函数

    #定义注册函数
    def register():      
        """注册功能"""     # 函数的注释加在这个第二行
        username=input('请输入用户名:')
        pwd=input('请输入密码:')
    
        with open('user_info.py','a',encoding='utf8') as fa:    # a模式自动创建用户信息文件
        fa.write(f'{username}:{pwd}|')
    register()    # 调用注册功能函数
    

    1.3 登录功能函数

    # 定义登录函数
    def login():     
        """登录功能"""
        inp_username=input('请输入用户名:')
        inp_pwd=input('请输入密码:')
    
        with open('user_info.py','r',encoding='utf8') as fr:
            #  循环把fr里元素取出放到列表里 ,循环的注释加在循环体上面
            for user_info in fr:
                user_info_list = user_info.split('|')   # 把fr里的用户信息切割成列表
                inp_user_info=f'{inp_username}:{inp_pwd}'
                if inp_user_info in user_info_list:
                    print('登录成功')
                    break
                else:
                    print('登录失败')
    login()      # 调用登录函数
    

    二、定义函数的三种形式

    参数:未知数、变量,定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量

    2.1 无参函数

    在定义函数阶段括号内没有参数,称为无参函数。

    注意:定义时无参,调用时括号内也不需要传入参数

    如果函数体代码逻辑不需要依赖外部传入的值,必须得定义成无参函数

    def func():
        x=input('num1:')
        y=input('num2:')
        print(int(x)+int(y))
    
    func()
    

    2.2 有参函数

    在函数定义阶段括号内有参数,称为有参函数。

    注意:定义时有参,调用时也必须传入参数

    如果函数体代码逻辑需要依赖外部传入的值,必须得定义成有参函数

    def sum_self(x, y):
        """求和"""
        res = x+y
        print(res)
    
    sum_self(1,2)  # 调用函数,最后打印出res的值为3
    

    2.3 空函数

    当你只知道你需要实现某个功能,但不知道该如何用代码实现时,你可以暂时写个空函数,然后先实现其他的功能。

    def func():
        pass
    

    三、函数的参数

    3.1 形参和实参

    1、形参: 定义阶段才有形参,形式参数,啥也没用,只是占个位置,具有描述意义

    2、实参: 调用阶段才有实参,实际的参数,具有具体的值

    def add(num1, num2):  # 形参
        """有参函数"""
        print(int(num1) + int(num2))
    
    add(1, 2)    # 实参
    

    3.2 位置形参和位置实参

    1、位置形参: 一个一个的写形参,就叫位置形参

    2、位置实参:一个一个值写过去,就叫位置实参

    3、两个位置形参,就必须得有两个位置实参对应,从左到右一一对应

    
    def add(num1, num2):  # 形参   # 3、位置形参: 一个一个的写形参,就叫位置形参
        """有参函数"""
        print(num1)
        print(num2)
        print(int(num1) + int(num2))
    add(1, 2)  # 实参  # 4、位置实参: 一个一个写过去,就叫位置实参
    

    3.3 默认形参

    在定义阶段,就已经被赋值,不需要传参,可以使用默认值; 传参就使用你传的值, 默认形参必须放到位置形参后面

    def func(x, y=10):   # x为位置形参,y=10就是默认形参
        print(x)
        print(y)
    func(2)
    

    3.4 关键字实参

    按照形参名给定具体的值,可以打破位置形参必须一一对应传值的规定,但仍能为指定的形参赋值,关键字实参必须在位置实参之后。

    def shopping(x, name='nick'):   # name='nick'为默认形参
        goods_dict = {1: '特斯拉', 2: '奔驰', 3: 'nick'}
        print(f'恭喜你这个小钢炮{name},得到{goods_dict[x]}一个')
    
    
    shopping(1, name='yongjiu')    # name='yongjiu'为关键字实参
    

    函数的参数尽量不要超过3个,需要用的时候,一般用位置形参和位置实参

    四、函数的返回值

    4.1 什么是函数的返回值

    def func():
        name='zyl'
        return name    # return 变量名就是返回变量的值 
                       # 只要执行到return,函数就会执行,就会终止函数,直接返回name的值'zyl'
    name=func()    # 调用函数,并用函数返回值'zyl'赋值给name
    print(name)
    

    4.2 返回值的个数

    def add(x,y):
        print(x+y)
    res=add(1,2)    # 返回值个数为0个时,也就是函数里没有return时,默认返回None,
    print(res)     # res接受到的返回值默认为None
    

    return的返回值可以返回任意数据类型

    return的返回值无个数限制,即可以使用逗号隔开返回多个值

    def add(x, y):
        # return (x, y, x + y)  # return可以返回任意数据类型 
        return x, y, x + y  # return可以返回任意数据类型,不加括号返回多个值时,默认用元祖的形式返回
    a=add(1,2)
    print(a)         # (1, 2, 3)
    x,y,z = add(1, 2)   # 可以用来解压缩
    print(x,y,z)      # 1 2 3
    

    return是一个函数结束的标志,函数内可以有多个return

    def max_self(salary_x, salary_y):
        if salary_x > salary_y:
            return salary_x
        else:
            return salary_y
    
    max_salary = max_self(20000, 30000)
    print(max_salary*12)     # 360000
    

    五、函数的调用

    5.1 什么是函数调用

    def func():
        print('zyl handsome')
    
    func()    # 这一步就是调用函数 ,不调用函数,就不会执行函数内的代码
    

    5.2 函数调用的三种方式

    def max_self(x, y):
        if x > y:
            return x
        else:
            return y
    # 1.
    max_self(1, 2)
    # 2.
    res = max_self(1, 2) * 12
    # 3.
    max_self(max_self(20000, 30000), 40000)
    
  • 相关阅读:
    Web 跨域请求(OCRS) 前端解决方案
    接口与抽象
    观察者模式
    建造者模式(Builder)
    外观设计模式 (Facade)
    模板方法模式( TemplateMethod)
    原型模式(ProtoType)
    简单工厂法( Factory Method)
    backup与recover
    Oracle自动备份脚本的实现
  • 原文地址:https://www.cnblogs.com/zhuangyl23/p/11322351.html
Copyright © 2011-2022 走看看