当前位置:脚本大全 > > 正文

python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

时间:2021-10-13 00:53:35类别:脚本大全

python3函数的使用方法

Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等

本文实例讲述了python3.5函数的定义与使用。分享给大家供大家参考,具体如下:

1、函数学习框架

python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

2、函数的定义与格式

(1)定义

python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

(2)函数调用

python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

注:函数名称不能以数字开头,建议函数名称的开头用小写的字母

(3)函数有四种格式,分别是:无参数无返回值,有参数无返回值、无参数有返回值、有参数有返回值

python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • #!/usr/bin/env python
  • # -*- coding:utf-8 -*-
  • # author:zhengzhengliu
  •  
  • # 无参数无返回值
  • def hello():
  •  # 函数体/方法体
  •  print("hello world")
  •  
  •  
  • hello()
  •  
  •  
  • # 有参数无返回值
  • def add(x, y):
  •  print(x + y)
  •  
  •  
  • add(10, 20)
  •  
  •  
  • # 无参数有返回值
  • def sleep():
  •  return "sleep"
  •  
  •  
  • s = sleep()
  • print(s)
  •  
  •  
  • # print(sleep())  等价于上面两句
  •  
  • # 有参数有返回值
  • def sub(x, y):
  •  return x * y
  •  
  •  
  • res = sub(12, 6)
  • print(res)
  • 运行结果

    hello world
    30
    sleep
    72

    3、函数的参数

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

    注:定义再函数体内的参数是形参,调用时传入的参数是实参。

    函数参数包括:位置参数关键字参数不定个数参数

    (1)位置参数、关键字参数

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

    示例代码:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • #位置参数
  • def test(x,y,z):
  •  print(x,y,z)
  •  
  • test(1,2,3)
  •  
  • #关键字参数
  • def test1(x,y,z=10):
  •  print(x,y,z)
  •  
  • test1(1,2,3)
  • test1(1,2#关键字参数,z采用默认的参数值
  • test1(x=2,z=3,y=1) #调用时的关键字参数
  • 运行结果:

    1 2 3
    1 2 3
    1 2 10
    2 1 3

    (2)默认参数

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

    注:带有默认值参数的形参必须放在参数的最后面的位置。

    (3)不定个数参数,用*args   和    **kwarg

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

    总结:

    (1)定义时  *的作用  将位置实参装配成元组

    定义时  **的作用  将关键字实参装配成字典

    (2)调用时  *作用  将元组或列表打散成位置参数进行参数传递

    调用时  **作用  将字典打散成关键字参数进行参数传递

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • #不定个数参数
  •  
  • def test2(x,y,z,*args):
  •  print(x,y,z,args)
  •  
  • #定义时 *的作用 将位置实参装配成元组
  • test2(1,2,3,4,6,7,8,9)
  •  
  •  
  • def test3(x,y,z,**kwargs):
  •  print(x,y,z,kwargs)
  •  
  • #定义时 **的作用 将关键字实参装配成字典
  • test3(1,2,3,a=6,b=19,c=8)
  •  
  • def ts(x,*args,**kwargs):
  •  print(x,args,kwargs)
  •  
  • ts(1,2,3,a=6,b=19,c=8)
  •  
  • def test4(x,y,z):
  •  print(x,y,z)
  •  
  • x = [1,2,3]
  • y = {"x":1,"y":"hello","z":"你好"}
  •  
  • test4(*x)  #调用时 *作用 将元组或列表打散成位置参数进行参数传递
  • test4(**y)  #调用时 **作用 将字典打散成关键字参数进行参数传递
  •  运行结果:

    1 2 3 (4, 6, 7, 8, 9)
    1 2 3 {'b': 19, 'a': 6, 'c': 8}
    1 (2, 3) {'b': 19, 'a': 6, 'c': 8}
    1 2 3
    1 hello 你好

    4、函数的传值:基本类型传值调用、非基本类型参数传递调用(强引用与弱引用)

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • #!/usr/bin/env python
  • # -*- coding:utf-8 -*-
  • # author:zhengzhengliu
  •  
  • #基本类型传值调用
  • def test(x):
  •  print(x)
  •  
  • test(10)
  •  
  • #非基本类型参数传递调用
  • li = [1,2,3,4]
  • print(id(li)) #打印传递前的地址
  •  
  • def test1(x):
  •  print(id(x))
  •  x[0] = 2 #修改第一个参数为2
  •  print(x)
  •  
  • test1(li) #强引用(传址调用,列表里面的内容会进行修改)
  • #test1(list(li)) #弱引用(用list可以消除强引用,不能修改列表里的元素)
  •  
  • for i in li:
  •  print(i)
  • 运行结果:(强引用传址调用)

    10
    17741864
    17741864
    [2, 2, 3, 4]
    2
    2
    3
    4

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • #!/usr/bin/env python
  • # -*- coding:utf-8 -*-
  • # author:zhengzhengliu
  •  
  • #基本类型传值调用
  • def test(x):
  •  print(x)
  •  
  • test(10)
  •  
  • #非基本类型参数传递调用
  • li = [1,2,3,4]
  • print(id(li)) #打印传递前的地址
  •  
  • def test1(x):
  •  print(id(x))
  •  x[0] = 2 #修改第一个参数为2
  •  print(x)
  •  
  • #test1(li) #强引用(传址调用,列表里面的内容会进行修改)
  • test1(list(li)) #弱引用(用list可以消除强引用,传值调用,不能修改列表里的元素)
  •  
  • for i in li:
  •  print(i)
  • 运行结果:(弱引用,传值调用)

    10
    18501544
    18613272
    [2, 2, 3, 4]
    1
    2
    3
    4

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • #不可变对象——传递对象的值,修改值修改的是另一个复制对象,不影响原来对象本身
  • def getnum(a):
  •  a = 10
  •  print("函数内变量a的值:",a)
  •  
  • a = 8
  • getnum(a)
  • print("函数外变量a的值:",a)
  •  
  • #可变对象——传递对象本身,函数内部修改值会影响对象本身
  • list01 = [0,1,2,3]
  •  
  • def getnum1(num):
  •  num.append(4)
  •  print(num)
  •  print(id(num))
  •  
  • getnum1(list01)
  • print(list01)
  • print(id(list01))
  • 运行结果:

    函数内变量a的值: 10
    函数外变量a的值: 8
    [0, 1, 2, 3, 4]
    5908280
    [0, 1, 2, 3, 4]
    5908280

    5、函数的返回值

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

    示例代码:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • #多个返回值
  • def re(a,b):
  •  a *= 10
  •  b *= 10
  •  return a,b
  •  
  • num = re(1,2)
  • print(type(num))  #如果返回多个值,并且存在一个变量中,会以元组的形式保存
  • print(num)
  •  
  • #分别获取多个返回值
  • re1,re2 = re(3,4)
  • print(type(re1))
  • print(re1,re2)
  • 运行结果:

    <class 'tuple'>
    (10, 20)
    <class 'int'>
    30 40

    简单实例练习:

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • def operation(a,b,opt):
  •  if opt == "+":
  •   return a+b
  •  elif opt == "-":
  •   return a-b
  •  elif opt =="*":
  •   return a*b
  •  elif opt =="/":
  •   return a/b
  •  else:
  •   return "输入有误"
  •  
  • num1 = int(input("请输入第一个字符:"))
  • num2 = int(input("请输入第二个字符:"))
  • op = input("请输入运算符:")
  • result = operation(num1,num2,op)
  • print(result)
  • 运行结果:

    请输入第一个字符:1
    请输入第二个字符:2
    请输入运算符:+
    3

    6、变量的作用域:全局变量与局部变量

    在函数的内部,不能识别全局变量,想要在函数内部使用全局变量,需要关键字global,但不建议这样使用,使用global具有污染性。

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)
     

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

    (1)局部变量

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

    (2)全局变量

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

    (3)当全局变量与局部变量同名时,优先使用局部变量

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • #全局变量与局部变量同名
  • a = 10  #全局变量
  • print("全局变量a:%d"%a)
  •  
  • def test01():
  •  a = 20
  •  print("test01中的a:%d"%a)
  •  
  • def test02():
  •  print("test02中的a:%d"%a)
  •  
  • test01()
  • test02()
  • 运行结果:

    全局变量a:10
    test01中的a:20
    test02中的a:10

    (4)修改全局变量

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • #!/usr/bin/env python
  • # -*- coding:utf-8 -*-
  • # author:zhengzhengliu
  •  
  • i = 20
  •  
  • def test():
  •  #i += 10  #函数内部直接修改全局的值(错误)
  •  global #函数内部修改全局的值用global关键字
  •  i += 10
  •  print(i)  #获取全局变量的值
  •  
  • test()
  • 运行结果:

    30

    python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)

    注:上边代码中,函数内修改不可变类

    标签:
    上一篇下一篇

    猜您喜欢

    热门推荐