函数的定义和使用

函数的定义和使用

 1 def test(x):       # x表明形参
 2     '''
 3     2*x+1
 4     :param x:整形数字
 5     :return:返回计算结果
 6     '''
 7     y = 2*x+1
 8     return y
 9 p = test(3)     # test()表示运行名为test函数,3表明实参,给x进行赋值
10 print(p)

 

函数的定义:python

  • def: 表示函数的关键字
  • 函数名: 函数的名称, 根据函数名调用函数
  • 函数体: 函数中进行一系列的逻辑计算
  • 参数: 为函数执行完毕后, 能够给调用者返回数据

一. 为何要用函数?

  1. 减小代码量
  2. 保持一致性
  3. 易维

二. 函数的参数

函数有三种不一样的参数:函数

  • 普通参数
    # ######### 定义函数 #########spa

     # name 叫作函数func的形式参数,简称:形参
      def func(name):
          print name
    
      # ######### 执行函数 ######### 
      #  'wupeiqi' 叫作函数func的实际参数,简称:实参
      func('wupeiqi')

     

  • 默认参数code

    def func(name, age = 18):
    
          print "%s:%s" %(name,age)
    
      # 指定参数
      func('wupeiqi', 19)
      # 使用默认参数
      func('alex')
    
      注:默认参数须要放在参数列表最后

     

  • 动态参数 *argshtm

    def func(*args):
    
          print args
    
    
      # 执行方式一
      func(11,33,4,4454,5)
    
      # 执行方式二
      li = [11,2,2,3,3,4,54]
      func(*li)

     

  • 动态参数 **kwargsblog

    def func(**kwargs):
    
          print args
    
    
      # 执行方式一
      func(name='wupeiqi',age=18)
    
      # 执行方式二
      li = {'name':'wupeiqi', age:18, 'gender':'male'}
      func(**li)

     

 

  重点: 位置 > *args > 默认值 > **kwargs递归

  *, ** 在形参. 表示聚合, 在实参, 表示打散作用域

三. 函数的变量

函数的变量可分为 全局变量和局部变量get

全局变量(大写)

定义:没有缩进的变量

局部变量(小写)

定义:子程序下定义的变量

name = 'lhf'                 # 这里就指全局变量


def change_name():
    name = '帅了一比'      # 这里就指局部变量
    print('change_name', name)


change_name()
print(name)    

结果
change_name 帅了一比
lhf

 

global和nolocal

global声明是全局变量,nolocal指定上一级变量

未声明全局变量

x = 99
def func():
    x = 88
func()
print(x)     #输出99

 

声明全局变量
x = 99
def func()
    global x
    x = 88
func()
print(x)    #输出88

 

未指定上一级变量

def func():
    count = 1
    def foo():
        count = 12
    foo()
    print(count)
func()    #输出1

 

指定上一级变量

def func():
    count = 1
    def foo():
        nonlocal count
        count = 12
    foo()
    print(count)
func()     #输出12

 

 

名称空间:
1. 内置名称空间 -> 放解释器内部的一些东西. print, input, len
2. 全局名称空间 -> 在全局py文件中... 全局变量(变量, 函数 )
3. 局部名称空间 -> 在函数内部的 变量, 函数

做用域:
1. 全局做用域: 随便用. 全局名称空间+内置名称空间 -> globals
2. 局部做用域: 局部使用. 函数内部. 局部名称空间 -> locals 查看当前做用域

global
1. 在局部引入全局变量
2. 在局部建立全局变量

nonlocal
在局部. 内层函数引入外层函数的局部变量

 

四. 递归函数

ps: 用的好的都是大牛~

就是函数本身调用本身

特性:

  1. 必须有一个明确的结束条件,

  2. 每次进入深一层递归时,问题规模都应有所减小

    def calc(n):
         print(n)
         if int(n / 2) == 0:
             return n # 当上面的条件成立后一个真值,返回到函数
         res = calc(int(n / 2))    
         print(n,res) 
         return res # 返回res的值,要将真值一层一层传递回去
    
     calc(10)   

     

五. lamabda匿名函数

lambda用法,冒号以前的是入参,冒号以后的是表达式,返回的值,最简单的函数

print [(lambda x:x*x)(x)for x in range(11)]
#结果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print (lambda x:x*x)(3)
#结果:9
g=lambda x:x*x
print g(4)
#结果:16
相关文章
相关标签/搜索