zoukankan      html  css  js  c++  java
  • python函数1(基础)

    函数

           函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

           函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

     
    一、函数定义
           1、对于自定义函数,需要遵守以下几个规则:
    • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()

    • 圆括号内可以用于定义参数,圆括号外紧跟冒号

    • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明

    • 函数内容(函数体)缩进(一般是四个空格键或一个Tab键)

    • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None

           2、语法

    def 函数名(参数):     #定义函数(声明),参数是形参
        '''
        说明文档
        '''
        函数体
        return 表达式       #返回值
        
    函数名(参数)        #调用函数,参数是实参
    

      函数声明时,括号里的参数称为形参,形参的值是不确定的,只是用来占位的。

           函数调用时传递参数,函数调用时传入的参数,才是真正参与运算的数据,我们称为实参。

           函数调用时,会把实参一一对应交给形参处理(位置传参),但也可以关键字传参,就不讲究位置了。

           函数的返回值就是函数的执行结果,并不是所有函数都有返回值。

           3、函数定义的几个建议

           为了更好的阅读函数,程序员在进行函数定义时,时常对函数建议和说明:

           a、对形参建议类型

           b、对返回值建议类型

           c、说明文档

    def add(x: int, y: int) -> float:  #参数x,y建议int,返回值建议float
        '''                            #函数说明
        函数add为加法运算
        :param x:第一个加数
        :param y:第二个加数
        :return:返回和
        '''
        return x + y / 2
    
    
    print(add(3, 4))
    #5.0

      注意:这里只是建议,如果类型不符合,只要符合语法规则,也不执行,不会报错。

    def add(x: int, y: int) -> float:
        
        return x + y
    
    
    print(add('3', '4'))
    # '34'
    

      

     二、关于函数名

           虽然普通的标识符都能作为函数名,但为了便于阅读,一般函数名使用下划线”_“连接所有的单词,比如all_student

     三、关于参数

          1、默认参数

           如果传递了参数,就使用传递的参数;如果没有传递参数,就使用默认的值。
    def func(x,y,z='Jack'):
        pass
    func(4,5,'Rose')      #传递了参数
    
    func(4,5)      #缺省了一个参数z,就使用默认'Jack'
    
    func('hello','world')     #位置传参:x='hello',y='world',z='Jack'
    
    func(y=5,x=4)    #关键字传参,参数位置可以变化
    
    func(5,z='Mike',y=4)  #既有位置传参,又有关键字传参,位置参数一定放在前面
    

      

           2、可变参数

           可变参数有两种形式,带*号的和带**号的。带*号的变量变成存放多余实参的元祖;带**号的变量变成存放关键字实参的字典。

    #def func(*args)     可变位置参数,参数以元组的形式存在args里
    def add(x,y,*args):
        sum=x+y
        for arg in args:
            sum+=arg
        return sum
        print(add(1,3))      #arg=()
        print(add(1,3,5,7))   #arg=(5,7)
        
    #def func(**kwargs)    可变关键字参数,参数以字典的形式存在kwargs里
    def multi(**kwargs):
        c=1
        for m in kwargs.values():
            c*=m
        print(c)
    multi(x=2,y=3,z=4)
    
     def func(*args,**kwargs):   #组合使用
         pass    #arg=(1,3,5)  kwargs={'a':'hello','b':'world'}
     func(1,3,5,a='hello',b='world')    
    

      

           3、参数传递方式

           python中,根据实际参数的类型不同,函数参数的传递方式可分为 2 种,分别为值传递和引用(地址)传递:

           a、值传递:适用于实参类型为不可变类型(字符串、数字、元组);

           b、引用(地址)传递:适用于实参类型为可变类型(列表,字典);


           值传递和引用传递的区别是,函数参数进行值传递后,若形参的值发生改变,不会影响实参的值;而函数参数继续引用传递后,改变形参的值,实参的值也会一同改变。

    def func(a):    
        a = 10
    b = 2
    func(b)    #实参b是不可变数据类型
    print(b) # 结果是 2
    
    def func(mylist):
         mylist.append([1,2,3,4])
         print ("函数内取值: ", mylist)
         return
     
    mylist = [10,20,30]
    func(mylist)    #实参mylist是可变数据类型
    print("函数外取值:",mylist)
    #运行结果: 函数内取值:  [10, 20, 30, [1, 2, 3, 4]]
    #          函数外取值:  [10, 20, 30, [1, 2, 3, 4]]
    

      

           4、函数返回值

            一般情况下,一个函数最多只会执行一个return语句。

           特殊情况(finally语句)下,一个函数可能会执行多个return语句。

           一个return语句可以返回多个值:

    • return [x,y] 返回列表

    • return {‘x’:x,‘y’:y} 返回字典

    • return (x,y)或return x,y 返回元组

           

            5、函数中的变量

            函数内的变量称为局部变量,局部变量只能在函数内部使用。

            函数外的变量称为全局变量,全局变量在整个程序中都可以调用。

    • 全局变量和局部变量可以同名(函数外全局变量,函数内局部变量)

    • 函数内部要修改全局变量,在函数内声明: global 变量名

    • 对于嵌套多层的函数,使用nonlocal关键字可以将名字声明为来自外部嵌套函数定义的作用域(非全局),nonlocal x会从当前函数的外层函数开始一层层去查找名字x,若是一直到最外层函数都找不到,则会抛出异常。

    • 在函数内可以调用内置函数locals()输出所有局部变量,调用globals()输出所有全局变量

    • 在Python里,只有函数能够分割作用域

           6、函数对象

    def add(x,y):
        return x+y
    
    def foo(x,y,func):
        return func(x,y)
    
    def bar():
        return add
    
    func = add
    
    print(func(2, 3))   # 函数被引用
    
    dict={'add':add,'max':max}
    
    print(dict['add'](4, 5))     # 函数可以作为容器类型的元素
    
    print(foo(8, 9, add))    # 函数可以作为参数传入另外一个函数
    
    f=bar()
    print(f(-5, -4))    # 函数的返回值可以是一个函数
    

       

  • 相关阅读:
    第一阶段总结
    第二次项目总结(移动端)
    iOS 配置smart svn8.6.6
    iOS Xcode6.4添加pch文件
    iOS 上传应用到APPStore 详细版
    真机测试
    ios 引导页
    iOS 画图工具的截图
    iOS UIViewController
    iOS 把图片存到相册中
  • 原文地址:https://www.cnblogs.com/shixiaoxun/p/14414878.html
Copyright © 2011-2022 走看看