• python基础07--函数


    1.1 函数

    1、函数的返回值,return  当函数结束的时候,给调用方一个结果

    a  只要函数执行到return  函数就会停止执行 ,函数中可以有多个return

    b  函数中如果不写return,默认返回None

    c  函数中只写一个return,也是返回None

    d  return 一个返回值, 调用方能接受一个返回值

    e  return 多个返回值, 多个值需要用,隔开  接受的时候是tuple类型的数据

       return ‘大妈’,’小护士’,’老师’

     

    2、函数的参数

    def  函数名(形参):

    函数体

    函数名(实参)  调用

     

    多参数的时候,形参和实参需要个数一样

     

    站在实参的角度:

    a 位置参数

    def zhuang(name,age):  print("my name is %s ,my age is %s"%(name,age))

    调用zhuang("zhuang",30)

     

    b 关键字参数

    def zhuang(name,age):  print("my name is %s ,my age is %s"%(name,age))

    调用zhuang(name = "zhuang",age = 30)

     

    c 混合参数,注意顺序,先写位置参数,在写关键字参数

    def zhuang(name,age,high):  print("my name is %s ,my age is %s"%(name,age))

    调用zhuang("zhuang",age = 30,high = “165”)

     

    站在形参的角度:

    a 位置参数

    def zhuang(name,age,high):  print("my name is %s ,my age is %s"%(name,age))

    调用zhuang("zhuang",age = 30,high = “165”)

     

    b 默认值参数    默认值调用时,可以用age=40  或者直接写 40

    def zhuang(name,age=30):  print("my name is %s ,my age is %s"%(name,age))

    调用zhuang("zhuang")

    调用zhuang("zhuang",40)     

     

    c 位置参数和默认值参数 先写位置参数,然后写默认值参数

     

    3、形参的不定参数:*args  **kwargs

           顺序: 位置参数,*args, 默认参数, **kwargs  

    def(a,b,c,*args,d=”women”,**kwargs):

     

    def  func(a,b,c,*args,d=5)   这种d会生效    

      func(1,2,3,4,5,6,7)     

       动态参数接受到的是tuple类型的数据

    *args    动态接受位置参数  

    **kwargs 动态接受关键字参数

     

    def func(**kwargs):

    func(a=”women”,b=”29”,c=”ben”)

     

    4、实参*  **

    *:站在实参的角度上,给一个seq加上*,就是将这个序列按照顺序打散

        seq: 任何序列,列表,字符串,元组,字典(字典的key值)

    **: 打散字典

    def func(*args):

    print(args)

    lis=[1,2,3]

    func(*lis)  #打散

     

    5、*  在调用函数的时候打散    在接受的时候聚合

     

    6、作用域

    命名空间既 变量或者函数的名称

    a内置命名空间,python提供的

    b 全局命名空间,直接在py文件中声明出来的变量

    c 局部命名空间,在函数内声明的变量和函数

    d 加载顺序 内置>全局>局部    

    e 取值顺序 局部>全局>内置  就近原则

       内部函数使用外部函数的数据

    a = “zhuang”     全局

    def func():       全局

    a = “马化腾”  局部

    print(a)      

    def funb():    局部

    print(women)

     

    作用域:

    a 全局作用域:全局命名空间+内置命名空间

    b 局部作用域: 局部作用域

    c globals()  获取全局作用域

          locals()  查看当前作用域中的名字

     

    7、补充

    对于不可变数据类型,在局部可以查看到全局作用域中的变量,但是不能修改,如果想要修改,需要添加global声明

    如果在一个局部(函数)内声明了一个global变量,那个这个变量在局部的所有操作对全局的变量有效

    a = 1

    def func():

    print(a)    #调用函数打印 1

     

    a=1

    def func()

    a+=1     #调用函数时报错,

     

    8、函数的嵌套  

     

    9、global nonlocal

       global     函数内部声明改变量为全局变量

       nonloclal  声明局部作用域中离他最近的变量引用过来

        声明后的变量,修改后则影响既修改的是原作用域中的数据

     

    num = 1

    def fun1():

         global num  # 需要使用 global 关键字声明

         print(num)

        num = 123

         print(num)

    fun1()

    输出结果:  1   123

     

    num = 20

    def outer():

         num = 10

         def inner():

             nonlocal num   # nonlocal关键字声明

            num = 100

             print(num)

         inner()   #函数嵌套,调用inner()

         print(num)

    outer()

    输出结果:  100  100

     

    10、函数

        如果形参的默认参数是一个可变类型数据,那么每一次调用函数的时候,如果不传值就会公用这个数据类型的资源

     

    不可更改:字符串,数字,元组  函数内修改不影响

    可更改:  列表,字典          函数内修改,影响外部的参数

  • 相关阅读:
    贡献15本经典C、C++、MFC、VC++教程,都是pdf完整版的
    雪花
    孙鑫C++视频教程 rmvb格式 全20CD完整版 精品分享
    mac上用VMWare虚拟机装win7
    阿里云如何解析域名,搭建云服务器环境
    2. Windows编程基础
    复制指定目录下的全部文件到另一个目录中
    Select查询命令
    使用OneNote2016发送博客
    Linux数字雨
  • 原文地址:https://www.cnblogs.com/fbug/p/11792935.html
Copyright © 2020-2023  润新知