③函数的使用方法2019年7月23日

Auth:焱讲       Date:2019/07/28       Cat:Python专栏       Word:共3012字

已关闭评论
主要内容:
函数的定义
函数的调用
参数的传递方式
一、函数
1.1    函数的定义
  • 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
  • 函数能提高应用的模块性,和代码的重复利用率。
  • 就像炒菜机可以封装好烹饪的各种步骤一样,函数也可以把我们要执行的代码放到一起,需要执行的时候,直接调用就可以。
方法一:
案例:平方函数,输入变量x返回其平方值x2
#定义函数
def test(a):      #定义一个函数为test
       z = a*a    #函数执行语句
       print(z)   #函数返回值
#调用函数
test(5)     #意思是a=5
方法二:
def a(x):
       s=x*x
       return s   #表示函数
print(a(4))
#案例2
def test2():   #定义函数
       print("你好")
test2()     #调用函数
1.2    函数的格式
  • ③函数的使用方法2019年7月23日 - 第1张图片③函数的使用方法2019年7月23日 - 第2张图片
1.3    参数传递
  • 几种参数设定方法:顺序传入,关键词,默认参数、不定长参数
  • 函数默认按照输入参数列表的顺序传入
#顺序传参(s = 1+2*x+3*y+z*x+x*y)
def shunxu(x,y,z):
       s = 1+2*x+3*y+z*x+x*y
       return s
#按位置输出
print(shunxu(1,2,3))
#②关键字传入(s = 1+2*x+3*y+z*x+x*y)
def guanjian(x,y,z):
       s2=1+2*x+3*y+z*x+x*y
       return s2
print(guanjian(1,y=2,z=3))
print(guanjian(1,z=3,y=2))
print(guanjian(x=1 , y=2 , z=3))   #关键字顺序传入
#可以将位置和关键词的方法混合使用,
#如果传入的第一个参数是用关键词传入的,
#那么后面每个参数都需要是关键词传入,否则会出现语法错误。
#③默认参数传入
#输入的参数可以是事先设定好赋值,也就是默认值。在调动函数的时候,可以不输入参数,函数内部会直接调用默认参数值。例如默认z=3
def moren(x,y,z=3):
       s3=1+2*x+3*y+z*x+x*y
       print(s3)
       return s3
moren(x=1,y=2)
#默认参数的默认值是可以修改的,将上面的z值传入设置为4,需要注意的是,默认参数必须放到参数列表的末位
moren(x=1,y=2,z=4)
————————————————————————————————————————————————————
#④不定长参数(*)
#案例一:不定长参数(引用多个函数)
def test(a,*b):
       print(b)
       print(b)
test(77,88,99)
————————————————————————————————————————————————————
#案例二:使用循环传参
def test2(c,*d):
       r = 0
       r += c
       for x in d:
              r += x
       return r
t = test2(1,2,3)
print(t)
————————————————————————————————————————————————————
#案例三:使用循环传参
def test3(x,*y):
       for i in y:
              print(x+i)
       return
print(test3(1,1,2,3))
————————————————————————————————————————————————————
#案例四:使用list列表传参
a =[1,2,3,4,5]
print(1,*a)
————————————————————————————————————————————————————
#④不定长参数(**)
#⑤不定长函数导入字典(**ags)
def test5(r,**dict5):
       print("输出:")   #
       print(r)             #输出r函数
       print(dict5)         #输出dict5中所有函数
test5(1,a=2,b=3)     #调用test5函数
 
返回值为:
输出:
1
{'a': 2, 'b': 3}
————————————————————————————————————————————————————
#④不定长参数(**)(案例2)
def a(**b):
       print(b)
a(a=1,b=2,c=True)
返回值:
{'a': 1, 'b': 2, 'c': True}
————————————————————————————————————————————————————
#⑥匿名函数
test = lambda z,x:z+100+x
print(test(1,2))
返回值:
103
③函数的使用方法2019年7月23日 - 第3张图片③函数的使用方法2019年7月23日 - 第4张图片③函数的使用方法2019年7月23日 - 第5张图片③函数的使用方法2019年7月23日 - 第6张图片
1.4    匿名函数:
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
③函数的使用方法2019年7月23日 - 第7张图片③函数的使用方法2019年7月23日 - 第8张图片
二、全局变量与局部变量
2.1    编写方法
  • 定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
  • 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问:
  • Python中:模块(module),类(class)以及函数(def、lambda)都会引入新的作用域,其它的代码块(如if/elif/else/、try/except、for/while等)
  • 是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问。
方法/类的编写方法
class 类名称():
      def 方法名/函数名称():
      def 方法名/函数名称():
      def 方法名/函数名称():
 
#方法编写案例(未实现)
#方法编写案例
class abc():
        def aaa():
            print("你今天真漂亮")
        def bbb():
            print("你真帅")
#调用
abc.aaa()   #你今天真漂亮
abc.bbb()   #你真帅
2.2    修改方法
  • 当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。
#修改全局变量案例global
num = 1
def fun1():
    global num  #需要使用global关键字声明
    print(num)      #修改前参数值(1)
    num = 123      #修改参数值
    print(num)      #修改后的参数值(123)
fun1()  #调用方法
print(num)   #调用参数值(123)
#修改嵌套作用域中的变量:
def outer():
    num =10
    def inner():
        nonlocal num #nonlocal关键字声明
        num = 100
        print(num)
    inner()
    print(num)
outer()
      

评论已关闭!