__va_start 内部函数只能在 varargs 中_python编程笔记(3)函数

1、函数

1.1 定义与调用

在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

例:

x=2;y=3
def mathtest(x,y):
    a=10
    t=10*x*y
    return t                           #return后面的将不会被执行
if __name__=="__main__":
   print(mathtest(x,y))    

1.2 全局变量与局部变量

程序中的变量不是在任何地方都可以访问的,变量作用域决定了在程序的哪个部分可以访问哪个变量。

  • 全局作用域:定义在函数之外的变量,可以在程序的任何位置使用。(或者在函数内部第一行在变量前global使变量变为全局作用域的变量)
  • 局部作用域:定义在函数内部的变量,只能在声明函数的内部起作用,起的是局部作用域

执行时,会有一个顺序,局部优先,外部最后,按照以下标识别,只有找不到,才从外部找。

例1:

info="address:"        #全局变量 4
def fa(country):       #调用变量 3
    city="shanghai"    #fa的局部变量2
    def sun(area):
        city="beijing"   #sun 的局部变量 1
        print(info+area+"."+city+"."+country)
    sun("haidian")
    print(city)
fa("china")

#address:haidian.beijing.china
#shanghai

例2:

global i
i=5
def f1():
    #global i
    i=10
    print(i)
    global j
    j=20
    print(j)

print(i)
f1()
print(i)
print(j)

#5   10   20    5   20

例3:

#global i
i=5
def f1():
    global i
    i=10
    print(i)
    global j
    j=20
    print(j)

print(i)
f1()
print(i)
print(j)

#5  10   20   10   20

2、lambda函数

平时创建函数的时候,都需要先定义,然后再设计好这个函数要返回什么东西。Lambda表达式可以简化这一过程,把一切浓缩进一行代码里;有了lambda,就可以告别过去繁琐的函数创建过程。

#传统方式
def fuction(a):
    b=a*2
    return(b)
fuction(2)   #4

#Lambda方式:
fuction=lambda a:a*2
fuction(2)    #4

3、fliter

用来过滤现有列表里的内容,并把符合要求的放进新列表里。filter接受两个参数,第一个是lambda表达式提供的过滤条件,第二个是要进行过滤的现有列表。基本格式为:

filter(fuc,seq)

例:

l=[4,5,6,7]
def f1(x):
    if x>5:
        return x
l2=list(filter(f1,l))
l2        # 6,7      

####
l2=list(filter(lambda x:x>5,l))
l2        # 6,7  

4、map

主要为将fuc作用于给定序列的每一个元素,并用一个列表返回。map()方法会将 一个函数 映射序列的每一个元素上,生成新序列,包含所有函数返回值。也就是说序列里每一个元素都被当做x变量,放到一个函数f(x)里,其结果是f(x1)、f(x2)、f(x3)......组成的新序列。

主要格式为:

map(func,seq1,[seq2])

c08d7bb87ad035c87e4752bc8eb09649.png

例:

###加和
l1=[1,2,3]
l2=[1,2,3]
i3=list(map(lambda x,y:x+y,l1,l2))
i3    ###2,4,6

###乘积
y=list(map(lambda x:x*2,range(0,20)))
#[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38]

5、reduce

reduce的工作过程是 :在迭代序列的过程中,首先把前两个元素(只能两个)传给函数,函数加工后,然后把得到的结果和第三个元素作为两个参数传给函数参数,函数加工后得到的结果又和第四个元素作为两个参数传给函数参数,依次类推。主要格式:

reduce(fuc,seq,[init])

与map不同,reduce不可以直接使用,需要用from functools import reduce导入。

062e0f191ad427d46cb2dbe53b1fbb9d.png

例如:

#sample1
from functools import reduce 
def f(x,y):
    return x*y
items = range(1,6)
result = reduce(f,items)
print(result)

#sample2
from functools import reduce
l=[1,4,8]
def f3(x,y):
    return(x+y)
t=reduce(f3,l,100)
t

参考:

1、https://zhuanlan.zhihu.com/p/21950096

2、https://zhuanlan.zhihu.com/p/77311224

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值