python-4-函数-装饰器,生成器

函数的定义和使用

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)

函数的定义:

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

一. 为什么要用函数?

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

二. 函数的参数

函数有三种不同的参数:

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

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

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

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

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

三. 函数的变量

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

全局变量(大写)

定义:没有缩进的变量

局部变量(小写)

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

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

四. 递归函数

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

 

 

八,递归

# 自己调用自己
def func():
    print("哈哈")
    func()

func()
# 官方文档上给的层数是 1000  实际测试的时候 998 997

  

 

转载于:https://www.cnblogs.com/zhaobin-diray/p/9318908.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值