美文网首页
python学习五

python学习五

作者: 多啦A梦的时光机_648d | 来源:发表于2020-03-20 20:54 被阅读0次

函数

1. 定义函数

def func1():
    print('hello world')
func1()   ##调用
hello world

2.函数的参数

def func2(name):   ##name就是函数func2的参数
    print(name + 'world')
func2('helo')   ##调用时加参数
heloworld
##
def add(num1,num2):   ##python的函数可以支持n个,只要你愿意
    result = num1 + num2
    print(result)
add(1,4)
5
## 参数可以通过关键字参数定义
def add(num1,num2):  
    result = num1 + num2
    print(result)
add(num1=1,num2=4)
5

函数的参数包括形参和实参

def func2(name):   ##name形参
    print(name + 'world')
func2('helo')   ##hello就是实参
heloworld

3.函数的返回值

def add(num1,num2):
    return (num1 + num2)   ##return执行返回值
print(add(1,4))
5

4.函数文档

def add(num1,num2):
    '这就是函数文档'   ##引号内部的为函数文档
    ## 而这时注释,两者在函数调用中都不打印  ## 井号后面的为注释
    return (num1 + num2)
print(add(1,4))
## 可以利用add.__doc__打印函数文档
print(add.__doc__)
'这就是函数文档'

5.默认参数

def add(num1=1,num2=4):  ## 1和4就是函数的默认参数
    return (num1 + num2)
print(add())   ##不带参数调用函数也不会报错
print(add(2,5))  ##带参数调用函数会替换掉默认参数
5
7

6.收集参数

也叫可变参数, 即在参数面前价格星号*

def test(*params):
    print('参数的长度是:', len(params));
    print('第二个参数是:', params[1]);
test(1,2,3,4,5,6)
参数的长度是: 6
第二个参数是: 2

7.局部变量和全局变量

count = 5    ##全局变量
def test():
    count = 10    ##局部变量
    print(count)
test()
## 局部变量可以通过globle关键字改为全局变量
count = 5
def test():
    global count    ##改为全局变量
    count = 10
    print(count)
test()

8.内嵌函数

内部函数作用域都在外部函数之内

def fun1():
    print('fun1()正在被调用...')
    def fun2():    ##fun2()函数就是fun1()的内嵌函数
        print('fun2()正在被调用...')
    fun2()
fun1()
fun1()正在被调用...
fun2()正在被调用...

9.闭包

def funX(x):
    def funY(y):   ##内部函数funY()就是一个闭包
        return x * y
    return funY
funX(4)
<function funX.<locals>.funY at 0x00A78FA8>   ##直接调用funX返回的是一个函数,其实就是返回的funY这个函数对象。
## 给定两个参数
def funX(x):
    def funY(y):
        return x * y
    return funY
funX(4)(5)
20
## 直接调用fun1()会报错,因为x会作为局部变量使用
def fun1():
    x = 5  ##这里的x=5是在fun2()的外部作用域里,是一个非全局变量的外部变量
    def fun2():
        nonlocal x   ##利用nonlocal关键字让x不是局部变量
        x *= x
        return x
    return fun2()   ##不加nonlocal的话,在执行renturn fun2()时,即会出现局部变量x在没有被赋值之前被调用。
print(fun1())

10.lambda表达式

python支持lambda关键字创建匿名函数

def fun(x):
    return x * 2
fun(2)
##lambda则可以精简函数定义
lambda x : x * 2
<function <lambda> at 0x00CD8F60>   ##可以看出返回的是一个函数对象。使用的时候只需要赋值即可。

g = lambda x : x * 2
g(2)
4
## 也可以是多个参数
g = lambda x, y: x * 2 + y
g(2,4)
8

11.两个BIF

  • filter

filter(function or none, interable), 两个函数,一个是函数,另一个为可迭代的序列

##筛选奇数
def odd(x):
    return x % 2
temp = range(0,10)
print(list(filter(odd,temp)))   ##odd为筛选条件,temp为可迭代的集合
[1,3,5,7,9]
##lambda
print(list(filter(lambda x : x % 2, range(10))))
[1,3,5,7,9]
  • map

类似于filter,也是两个参数

print(list(map(lambda x : x * 2, range(10))))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

相关文章

网友评论

      本文标题:python学习五

      本文链接:https://www.haomeiwen.com/subject/lzyhyhtx.html