zoukankan      html  css  js  c++  java
  • python之函数

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

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

    定义一个函数

    你可以定义一个由自己想要功能的函数,以下是简单的规则:

    • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
    • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
    • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
    • 函数内容以冒号起始,并且缩进。
    • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
    • 语法

      Python 定义函数使用 def 关键字,一般格式如下: 

    • 1 def 函数名(参数列表):
      2     函数体

      默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。例如:让我们使用函数来输出"Hello World!":

    • 1  def hello() :
      2     print("Hello World!")
      3 
      4 hello()  #调用函数
      5 
      6 Hello World!  #调用函数得到的结果

      更复杂点的应用,函数中带上参数变量: 计算两个数相乘的函数:

    • 1 def calc(a,b):#a,b 是形参,形式参数
      2     #位置参数,也叫必填参数,不填会报错
      3     res=a*b
      4     print('%s * %s = %s' %(a,b,res))
      5 calc(7,9)#7和8 是实参,实际参数
      6 
      7 #7 * 9 = 63 调用函数的结果

      默认参数

    • 调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 age 参数,则使用默认值:
       1 def printinfo( name, age = 35 ):
       2    "打印任何传入的字符串"
       3    print ("名字: ", name)
       4    print ("年龄: ", age)
       5    return
       6 #调用printinfo函数
       7 printinfo( age=50, name="runoob" )
       8 print ("------------------------")
       9 printinfo( name="runoob" )
      10 
      11 #以上实例输出结果:
      12 名字:  runoob
      13 年龄:  50
      14 ------------------------
      15 名字:  runoob
      16 年龄:  35

      不定长参数

      你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:

      1 def functionname([formal_args,] *var_args_tuple ):
      2    "函数_文档字符串"
      3    function_suite
      4    return [expression]

      加了星号(*)的变量名会存放所有未命名的变量参数。如果在函数调用时没有指定参数,它就是一个空元组。我们也可以不向函数传递未命名的变量。如下实例:

      # 可写函数说明
      def printinfo( arg1, *vartuple ):
         "打印任何传入的参数"
         print ("输出: ")
         print (arg1)
         for var in vartuple:
            print (var)
         return
       
      # 调用printinfo 函数
      printinfo( 10 )
      printinfo( 70, 60, 50 )
      
      以上实例输出结果:
      输出:
      10
      输出:
      70
      60
      50

      匿名函数

      python 使用 lambda 来创建匿名函数。

      所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

      • lambda 只是一个表达式,函数体比 def 简单很多。
      • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
      • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
      • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

      lambda 函数的语法只包含一个语句,如下:

    • 1 p = lambda x,y:x+1 #冒号后面的是函数体,也是函数返回值,冒号前面的是参数
      2 print(p(2))
      3 
      4 #结果是
      5 3

      全局变量和局部变量

      定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

      局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。函数里面定义的变量,都是局部变量,只在函数里面使用,出了函数就不可以调用。如下实例:

    •  1 total = 0 # 这是一个全局变量
       2 
       3 def sum( arg1, arg2 ):
       4     #返回2个参数的和."
       5     total = arg1 + arg2 # total在这里是局部变量.
       6     print ("函数内是局部变量 : ", total)
       7     return total
       8 
       9 #调用sum函数
      10 sum( 10, 20 )
      11 print ("函数外是全局变量 : ", total)
      12 
      13 #以上实例输出结果:
      14 
      15 函数内是局部变量 :  30
      16 函数外是全局变量 :  0
  • 相关阅读:
    消息中间件(一)MQ详解及四大MQ比较
    SIP协议
    PAT (Basic Level) Practice 1008 数组元素循环右移问题
    LeetCode-Algorithms 1. 两数之和
    PAT (Basic Level) Practice 1040 有几个PAT
    PAT (Basic Level) Practice 1023 组个最小数
    PAT (Basic Level) Practice 1021 个位数统计
    PAT (Basic Level) Practice 1007 素数对猜想
    PAT (Basic Level) Practice 1006 换个格式输出整数
    PAT (Basic Level) Practice 1004 成绩排名
  • 原文地址:https://www.cnblogs.com/xiehong/p/8963581.html
Copyright © 2011-2022 走看看