chapter 3【pyhton & data science

第三章  函数

3.1 创建函数

    1.def 语句

def fun():
print('hello world')

    2.lambda

    lambda是一种匿名函数(+: 避免函数名重复,不需要考虑函数名重复的问题)

    和def的区别只是  lambda 没有对象名称

    使用lambda有以下注意的几点:    

  •         lambda 定义的是单行函数,如果需要复杂的函数,应该使用def
  • lambda参数可以包括多个函数,  如: lambda  y:x+y
  • 只有一个返回值
  • 不能含有命令,只有一个表达式
from math import log
def make_logarithimic_function(base):
    return lambda x: log(x, base)
#此函数用于返回一个以base为底的匿名对数函数
My_LF= make_logarithimic_function(3)
#调用匿名函数
print My_LFE(9)
#result=2   

3.2 函数的参数

   三种形式:位置关键字参数  / 任何数量位置参数/任意数量关键字参数

   1.位置和关键字参数

    默认参数类型 

def fun2(a,b,c):
    print(a,b,c)
#可以使用位置参数
>>> fun2(1,2,3)     #可以使用关键词参数,关键字参数的顺序没有改变
>>> fun2(a=1,c=3,b=2)
#也可以混和使用位置和关键字,但是关键字必须在位置参数后面
>>> fun2(1,c=3,b=2)
>>> func(a=1,2,3)  #报错

  可以定义默认参数,但是python不允许带默认值的参数定义在没有默认值的参数之前。

   

def fun3(a=1,b):
print(a,b)  #报错,
def fun3(a,b=2)
 print(a,b)

如果调用fun3(2),那么首先会调用a=1,就没有值给b   第二个调用fun3(1),就不会报错

  2.任意数量的位置的参数

   需要一个星号前缀,任意数量的位置参数(1*)必须定义在位置或者关键字参数之后,且在任意数量的关键字参数(2**)之前

(意思就是  没得星号  ,一个星号,  两个星号)

3.3.可变对象和不可变

可变字典,列表
不可变数值类型,字符串,元组
def add1(num):
    num +1 =num

还是原来的值,因为地址不一样。

如果需要可变对象和赋值对象不进行音容,而是重新分配地址空间进行复制。

1)copy.copy 仅仅复制父对象,不会复制父对象里的子对象

2)copy.deepcopy 复制父对象和子对象。

3.4作用域

    python在创建,改变或者查找变量名的时候都是在命令空间中进行,也就是作用域

def print_x():
   x=2
print x
>>>x=1

     起初在print_x(): 外创建了一个x,又在内部创建了一个x,  局部变量和全局变量。内部函数不会访问到全局变量。

     如果想访问可以用:

def print_x():
    x=2
    print(globals():['x'])
>>>x=1
>>>print_x()
>>>1
如何在函数内创建全局变量:
    
def defin_x():
    global x  #设置全局变量
    x =2 
>>>x=1
>>>defin_x()
>>>print x
>>>2

最好少用global 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值