zoukankan      html  css  js  c++  java
  • 函数调用 函数参数 函数变量 函数返回值

    • 函数调用
     1 函数:实现某个功能的一些代码
     2 
     3 #定义函数
     4 def hhh():
     5     print('这是一个函数')
     6 ---------------------------------------------------------------------------------------------------------
     7 #调用函数
     8 hhh()
     9 
    10 ---------------------------------------------------------------------------------------------------------
    11 def hhh():
    12     pass #就是什么也不做的意思
    13 
    14 ---------------------------------------------------------------------------------------------------------
    15 def calc(a,b):#形参,形式参数
    16     print(a,b)
    17     return a+b  #返回值
    18 
    19 res = calc(1,2)#实参,实际参数    
    20  res 用来接收返回值
    21 print(res)
    22 
    23 ---------------------------------------------------------------------------------------------------------
    24 #判断输入的是否是合法的小数
    25 #1、判断是否只有一个小数点
    26 #2、小数点左边的是一个整数,小数点右边的也是一个整数
    27 #3、小数点右边的也是一个整数,左边要以负号开头,只有一个负号,负号后面是整数
    28 
    29 # input("请输入价格:")
    30 
    31 def check_float(num):
    32     num = str(num)
    33     if num.count('.')==1:
    34         left,right = num.split('.')
    35         if left.isdigit() and right.isdigit():
    36             return True
    37         elif left.starswith('-') and left[1:].isdigit()and right.isdigit():
    38             return True
    39     return False
    40 
    41 print(check_float('1.2'))
    • 函数参数
                        函数参数
    一、必填参数(位置参数)
    def say_hello(word):
        print(word)
    
    二、默认值参数
    def say_hello(word='hell0'):
        print(word)
    
    say_hello()
    say_hello('hi')
    运行结果:hell0
                      hi
    ------------------------------------------------------------------------------------------------------------
    #一个函数实现两个功能,能读文件,也能写文件
    方法一:
    def op_file(file,content=None):
        if content: #非空即真
            f = open('file','w',encoding='utf-8')
            # f.write(content)
            json.dump(content,f)
        else:
            f = open(file,encoding='utf-8')
            # res = f.read()
            result = json.load(f)
    -----------------------------------------------------------------------------------
    方法二:
    import json
    
    def op_file(file,content=None):
        if content:  # 非空即真
            with open(file,'w',encoding='utf-8') as f:
                   json.dump(content,f)
        else:
            with open(file,encoding='utf-8') as f:
                return json.load(f)
    ----------------------------------------------------------------------------
    
    三、参数组 【*args】
    
    def send_mail(*name):   #参数组  可以传一个,也可以传多个参数
        print(name)
    
    send_mail('bd')
    
    #1.不传参数
    #2.传1个
    #3.传n个
    #4.传过去的是一个什么东西   #多个参数放一个元组传给你
    
    send_mail()
    send_mail('ds')
    send_mail('zz','xx','fd','we')
    运行结果:('bd',)    #元组只有一个元素的时候,后边加一个逗号
                      ()
                      ('ds',)
                      ('zz', 'xx', 'fd', 'we')
    --------------------------------------------------------------------------------------
    
    四、关键字参数
    def szz(name,age,sex,addr,phone,qq,mail):
        print(name,age,sex)
    
    szz(addr='beijing',qq=2343,mail='dfsd@164.com',name='abc',age=34,sex='df',phone=2343)
    
    szz('xiaohei',18,addr='beijing',phone=234,mail='dfsd@164.com',qq=2343,sex='df')
    
    #调用函数的时候,可以全部都用位置参数,位置参数是一一对应的,必须按照位置来传参
    #也可以全部都用关键字参数,指定关键字,不需要按照顺序来
    #也可以一起用,但是要先写位置参数,再写关键字参数,关键字后面参数不能再出现为止参数
    运行结果:abc 34 df
            xiaohei 18 df
    -----------------------------------------------------------------------------------------------------
    
    def xiaohei(**info):
        print(info)
    
    #1.参数是否必传   不是必填的
    #2.位置参数传参,是否可以  ---不可以
    #3.关键字参数传参是否可以  ---可以
    #4.是否限制参数的个数    ---不限制
    
    xiaohei()
    # xiaohei(12,3,4)   #报错
    xiaohei(name='fdfs',addr='fadsfdf')
    
    -----------------------------------------------------------------------------------------------------------
    举例应用:
    def xiaobai(name,age,*args,**kwargs):
        print(name)
        print(age)
        print(args)
        print(kwargs)
    
    xiaobai('xiaobai',18,'beijing','shanghai',money
            =500,func=2032)
    
    运行结果:xiaobai
                     18
                     ('beijing', 'shanghai')
                     {'money': 500, 'func': 2032}
    
    ----------------------------------------------------------------------------------------------------------------
    def op_mysql(host,port,user,passwd,db):
        print(host)
        print(port)
        print(user)
        print(passwd)
        print(db)
    
    db_info = ('127.0.0.1',3306,'root','123456','szz')
    
    op_mysql(*db_info)  #代表拆开这个列表   #解包
    #代表拆开这个列表 一一对应传参数,#有下标的都可以这么整
    ---------------------------------------------------------------------------------------------------
    
    def op_mysql(host,port,user,passwd,db):
        print(host)
        print(port)
        print(user)
        print(passwd)
        print(db)
    
    db_info2 = {
        'host':'127.0.0.1',
        'port':3306,
        'user':'szz',
        'passwd':12322,
        'db':'szz'
    }
    
    op_mysql(**db_info2)  #把字典解开,host=127.0.0.1,port=3306,。。。。。
    • 函数变量
      1 #局部变量和全局变量
      2 #局部变量
      3   #定义在函数里面变量,局部变量就只能在函数里面使用,出了函数外面就不能用了
      4 
      5 name = 'abc'
      6 def func():
      7     name = 'abc2'
      8     age=38 #定义了没有使用的变量 颜色就是灰色的
      9    print('1',name)
     10 
     11 func()
     12 print('2',name)
     13 print('2',age)  #报错 
     14 #报错信息   NameError: name 'age' is not defined
     15 运行结果:1 abc2
     16                   2 abc
     17 -----------------------------------------------------------------------------------------------------------
     18 #尽量避免少用全局变量
     19   #1.只有python文件一直运行着 内存就一直占着
     20   #2.全局变量谁都可以改 不安全
     21 money = 0
     22 
     23 def dsk():
     24     global money #声明全局变量     要改全局变量的时候 才需要声明
     25     money+=500
     26 
     27 def ldd():
     28     global money #声明全局变量
     29     money-=1000
     30 
     31 print('money之前的',money)
     32 dsk()
     33 print('挣钱之后的',money)
     34 ldd()
     35 print('花钱之后的',money)
     36 运行结果:money之前的 0
     37                  挣钱之后的 500
     38                  花钱之后的 -500
     39 ----------------------------------------------------------------------------------------------------------
     40 练习题:
     41 money = 500
     42 def test(consume):#4.所以test(consume)=500
     43     return money - consume #5.money - consume=500-500=0
     44 
     45 def test1(money):# 2.所以test1接收到的money=500
     46     return test(money) + money #6.返回的值是0+500=500
     47           #3.test(money)中money接收到的值就是500
     48 money = test1(money) #1.money=500 所以test1(money)=500 #7.函数返回500
     49 print(money) #8.所以最后输出的还是500
     50 
     51 ------------------------------------------------------------------------------------------------------------------
     52 def test():
     53     global a
     54     a = 5
     55 
     56 def test1():
     57     c = a+5
     58     return c
     59 
     60 res = test1()
     61 print(res)
     62 运行结果:NameError: name 'a' is not defined  【报错】
     63 分析:因为没有调用test(),所以相当于变量a没有被定义
     64 
     65 :修改
     66 def test():
     67     global a
     68     a = 5
     69 
     70 def test1():
     71     c = a+5
     72     return c
     73 
     74 test()
     75 res = test1()
     76 print(res)
     77 运行结果:10
     78 ------------------------------------------------------------------------------------------------------------
     79 stus = ['xiaohei','xiaobai','yaya']     #列表   #不需要声明
     80 stus_info = {
     81     'name':'haha',                             #字典    #不需要声明
     82     'age':18
     83 }
     84 
     85 stus2 = {'xiaoyg','hisui'}                #集合  #不需要声明
     86 
     87 #int str tuple      #需要global声明
     88 
     89 #可变类型:字典,list,set
     90 #不可变类型:int,str,元组
     91 
     92 def add_stu():
     93     name = input('name:')
     94     age = input('age:')
     95     stus_info[name]=age
     96 
     97 def select_stu():
     98     name = input('name:')
     99     print('你的学号是%s'%stus.index(name))
    100 
    101 add_stu()
    102 select_stu()
    103 
    104 print(stus)
    105 print(stus_info)
    106 运行结果:name:huhu
    107                  age:32
    108                  name:yaya
    109                  你的学号是2
    110                  ['xiaohei', 'xiaobai', 'yaya']
    111                  {'name': 'haha', 'age': 18, 'huhu': '32'}
    •  函数返回值
     1 def xiaobai():
     2     for i in range(100):
     3         print(i)
     4         return i
     5 
     6 res = xiaobai()
     7 print(res)
     8 # #循环一次遇到return就结束了
     9 
    10 def get_file(age,name,addr):
    11     #当前目录下有多少个文件名
    12     #这些文件的文件名
    13     age+=5
    14     name = 'szz_'+name
    15     addr = 'beijing_'+addr
    16     return age,name,addr   #不管返回多少个参数,最后的结果都是放在一个元组里边
    17 res = get_file(19,'xiaohei','昌平')
    18 print(res)
    19 
    20 age,name,addr=get_file(19,'xiaohei','昌平') #也可以给多个值来接收
    21 print(age)
    22 print(name)
    23 print(addr)
    24 
    25 # #在参数后面加冒号,代表传的参数是什么类型,就是方便调用方法
    26 def add_user(username:str,password:list):
    27     print(username)
    28     print(password)
    29 
    30 add_user('sd',{'sd':23}) #你传别的类型也不影响
    31 
    32 #递归,函数自己调用自己
    33 
    34 def a():
    35     print('as')
    36     a()
    37 
    38 a()
    39 #递归,函数自己调用函数,最深999次
    40 
    41 def b():
    42     num = input('请输入一个数字:').strip()
    43     if int(num)%2!=0:
    44         print('请重新输入:')
    45         b()
    46 b()
  • 相关阅读:
    toFixed()与银行家舍入
    VScode链接服务器并配置公钥-SSH Keys
    改造@vue/cli项目为服务端渲染-ServerSideRender
    vue预渲染及其cdn配置
    界面优化--如何提升用户体验(Velocity.js和GSAP)
    eslint配置介绍-如何在uniapp中配置eslint
    babel 的介绍及其配置
    如何为我的VUE项目编写高效的单元测试--Jest
    計算幾何 學習
    Manacher
  • 原文地址:https://www.cnblogs.com/baiby/p/10775910.html
Copyright © 2011-2022 走看看