首页 > 其他 > 详细

函数调用 函数参数 函数变量 函数返回值

时间:2019-04-26 19:08:49      阅读:90      评论:0      收藏:0      [点我收藏+]
  • 函数调用
 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()

 

函数调用 函数参数 函数变量 函数返回值

原文:https://www.cnblogs.com/baiby/p/10775910.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!