zoukankan      html  css  js  c++  java
  • 函数基础

    函数的定义

    什么是函数

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

    使用函数

    先定义函数,再调用函数

    def 函数名():
        <函数实现的功能>
       
    # 调用函数
    函数名()
    

    注:函数名的命名方式与变量名的命名方式一模一样

    函数定义阶段,只检测语法,不执行代码

    实现注册、登录功能的函数

    注册功能

    def register():   # 定义注册功能的函数
        print('注册功能')
        username_inp = input('请输入你的用户名:')
        print('用户名:', username_inp)
        pwd_inp = input('请输入你的密码:')
        print('密码:', pwd_inp)
        with open('user_info.txt', 'a', encoding='utf8') as fa:
            if (':'or '.')in username_inp:
                print('输入错误, 请重新输入')
            else:
                fa.write(f'{username_inp}:{pwd_inp}')
                print('注册成功')
                
    register()   # 调用函数
    

    登录功能

    def login():
        print('登录功能')
    
        with open('user_info.txt', 'r', encoding='utf8') as fr:
            data = fr.read()
            res = data.split(':')
            # print(res)
            username, pwd = res[0], res[1]
    
            username_inp = input('请输入用户名:')
            pwd_inp = input('请输入密码:')
            if username == username_inp and pwd == pwd_inp:
                print('登录成功')
            else:
                print('登录失败')
    
    login()  # 调用函数
    

    定义函数的三种方式

    空函数

    def register():
        # TDDO: 这个功能暂时不会写,如果想到怎么写了,可利用todo,快速找到这个位置
        pass   # 写个空函数,占个位置
    

    无参函数

    函数括号内没有参数,调用时也不需要传入参数

    def sum_all():
        print(10 + 20)
        
    sum_all()
    

    有参函数

    函数括号内有参数,调用时需要传入参数

    def sum_all(x,y):
        res = x + y
        print(res)
        
    sum_all(10, 20)
    

    函数的返回值

    函数没有返回值,默认返回None

    def add():
        x  = 10
        y = 20
        
    print(add)    # <function add at 0x0000027F0FFBD268>函数内存地址
    res = add()   # res接受一个变量值 (函数的返回值)
    print(res)   # 返回None
    

    函数可以通过return返回出返回值

    def add(x, y):
        return x + y
    
    res = add(1, 2)
    print(res)
    

    return 可以终止函数

    def func():
        for i in range(10):
            if i == 5:
                return    # 终止函数
            print(i)
            
    func()
    # 打印结果:
    0
    1
    2
    3
    4
    

    return返回多个值

    def func():
        return 1, 2, 3   # 默认返回的值以元组形式存储
    
    print(func())   
    

    函数的参数

    形参和实参

    def compare(x, y):   # 形参
        if x > y:
            print(x)
        else:
            print(y)
            
    compare(10, 21)   # 实参
    
    • 形参:在函数定义阶段括号内定义的参数,称为形参, 没有实际意义,本质上就是变量名

    • 实参:在函数调用时传入的值,称为实参, 本质上就是变量值

    位置参数

    位置形参

    在定义函数时,按照从左往右的顺序依次定义,就是位置形参

    位置实参

    调用函数时,按照从左往右的顺序依次传入值,就是位置实参。有多少个位置形参,就有多少个位置实参。

    默认形参

    def func(x, y=10):
        print(x)
        print(y)
        
    func(1)
    
    # 打印结果:
    1
    10
    

    在定义阶段就已经赋值,在调用阶段就不需要传值了

    但是在调用阶段传值也是可以的,这样值会发生改变

    def func(x, y=10):
        print(x)
        print(y)
        
    func(1, 2)
    # 打印结果:
    1
    2
    

    注意:

    • 默认形参必须在位置形参的后面
    • 默认形参的值在函数定义时,就已经固定了

    关键字参数

    def compare1(num1, num2):
        if num1 > num2:
            return num1
        else:
            return num2
    
    
    def compare2(num1, num2, num3, num4):
        res1 = compare1(num1, num2)
        res2 = compare1(num3, num4)
        res3 = compare1(res1, res2)
        return res3
    
    
    res = compare2(2, 6, num4=3, num3=1)  # 2,6,1,3  关键字实参,按照位置形参给值,一般用于参数过多
    print(res) 
    

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

  • 相关阅读:
    Computer Browser服务自动停止
    Group By中Case分类统计
    C#判断网络状态
    Win7中VC6打开文件报错(转)
    SqlBulkCopy(大数据量拷贝)
    vc6开发ActiveX并发布全攻略(二)(转)
    VC6 Activex控件调试
    VC MessageBox
    常用基本AT指令
    WinForm自动重启
  • 原文地址:https://www.cnblogs.com/setcreed/p/11448723.html
Copyright © 2011-2022 走看看