我是靠谱客的博主 聪明野狼,最近开发中收集的这篇文章主要介绍python3知识点汇总_Python知识点概要(3)函数,总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

参数

1普通函数:

没有参数

def abs():

print(''hello world!'')

return

必须参数

def abs(x):

if x>=0:

return x

else:

return -1

默认参数

def printName(x=0,y=1,z )

print(x,y,z)

return

可变参数:

我们的传入参数是动态的怎么办? 1变成list 2 可变参数

1

def sum(list)

2

def sum(*numbers)

sum=0

for number inunmbers

sum+=number

sum(0,1,2,3,4)

关键字参数:

如果我们还想继续在参数中添加其他信息怎么办?添加关键字参数;

def printName(name, **other)

print('name:' , name , 'other:' , other)

priintNmae('caomei',age=20)

命名关键字参数:对于printName函数,如果不允许随意添加新的参数;可以使用命名函数实现;

def printName(name,gender,*,age,city):

print(name,gender,age,city)

print('caomei','w',20,'xan')

变量

全局变量:函数外声明的是全局变量,

局部变量:函数内是局部变量;

global关键字:

在函数内使用global关键字 将局部变量变成 全局变量

num=1

def modify():

global num

num=2

return num

modify()

print()

nonlocal 关键字:

内嵌函数 想要 修改上已成函数变量 接著nonloacl 关键字

def modify():

num=1

def modify1():

nonlocal num

num=2

modify1()

return num

print( modify() )

nonlocal num可以修改上面的名字

变量的作用域:

局部变量 local

闭包函数外的函数作用域

全局作用域

内建作用域

num =int(1.2) #内建

g_num =2

def out_fun():

o_num=3 #闭包外

def in_fun():

l_num=4 #局部变量

高阶函数

把函数作为参数传入另一个 函数

1 函数名也是变量:

可以把求绝对值 函数abs计算结果赋值给变量;

num=abs(-5)

num=abs

num(-5)

2函数作为参数是传入另一个函数:

def plus(num1,num2,func ):

return func(num1)+ func(num2)

print( plus (-3,-4,abs ) )

调用publs时候,可以把函数传入里面

常见的内置高阶函数:

1map映射函数

map()映射函数:

可以接受两个参数,一个参数是函数,另一个参数 是可以迭代对象;

bad_name= ['aBc' , 'XAvl' , 'iNiEsa' ]

print(bad_name)

def CorrectName(name):

return (name.lower().caption() )

good_nmae=map(CorrectName,bad_name )

print(list(good_name))

[ ‘Messi’ , ‘Xavi’ , ‘Iniesta’ ]

2reduce() 序列计算函数

类似于map()函数,reduce()传入数据必须有两个参数

使用reduce()实现求乘积

from functools import reduce

numbers=[1,2,3,4,5]

def f(x,y):

return x*y

print(reduce(f,numbers))

3filter()条件过滤函数

o

类似于map(),但是根据返回值是false还是true,决定是保留还是丢弃改元素;

得到奇数:

num=range(1,11)

def f(x):

return x%2==1

odds= filter(f,numbers)

print( list ( odds) )

filter函数还可以删除一个列表中的所有空的字符串:

old_strs= ['messi','xavi','' ,None]

print( old_strs )

def f(x):

return x and x.strip()

new_strs=filter(f,old_strs)

print(list(new_strs) )

4sorted()排序函数

sort普通的是排序函数

sorted是高阶函数

numbers=[1,2,3-4]

sorted(numbers)

sorted( numerbs , key =abs )

sorted( playes )

sorted( playes , key=str.lower )

sorted( playes,key=str.lower,reverse=True )

闭包

高阶函数 除了做参数以外,还可以把参数作为结果返回;

函数返回参数,或者返回作用名字!

def Greeting(predix):

def greeting(postfix):

print(prefix,postifx)

return greeting

此时在Greeting就是闭包函数

闭包特性:

1 闭包函数必须有内嵌函数,必须返回内嵌的函数

2 内嵌函数引用上一级函数的变量;

装饰器

为什么要引入装饰器:

开放封闭原则: 就是对扩展是开放的,对修改是封闭的;

就是在不修改原有的代码( 包括函数,实现的调用方式 ),就可以为程序添加新功能!

比如模拟一个 博客园登录系统;

login_status = {

'username': None,

'password':None,

'status': False,

}

def auth(func):

def inner(*args,**kwargs):

if login_status['status']:

ret = func()

return ret

if 微信:

username = input('请输入用户名:').strip()

password = input('请输入密码:').strip()

if username == 'camei' and password == '123':

login_status['status'] = True

ret = func()

return ret

elif 'qq':

username = input('请输入用户名:').strip()

password = input('请输入密码:').strip()

if username == 'camei' and password == '123':

login_status['status'] = True

ret = func()

return ret

return inner

@auth

def diary():

print('欢迎访问日记页面')

@auth

def comment():

print('欢迎访问评论页面')

@auth

def home():

print('欢迎访问博客园主页')

diary()

comment()

home()

匿名函数

当调用 函数时,有时不需要显示定义一个函数,匿名函数更加方便;

lambda 参数1【,参数2,参数n】: 表达式

特点:

只有一个表达式,函数体 比def简单很多;

lambda 拥有自己的命名空间,不能访问自己参数列表之外,不能访问全局参数;

求乘积

sum = lambda x,y : x+y

print(sum(1,2))

求菲波那切数列

fib = lambda n : n if n<=2 else fib(n-1) +fib(n-2)

求偶数数

b=[1,2,3,4,5,6,]

list(filter(lambda x:x%2==0,b) )

偏函数

将 str转化为 int

比如int 提供了base参数

int('100',base=2)

#因此可以构建一个函数

import functools

int2 =functools.partial (int,base=2)

int2('0011')

int2('1111')

最后

以上就是聪明野狼为你收集整理的python3知识点汇总_Python知识点概要(3)函数,总结的全部内容,希望文章能够帮你解决python3知识点汇总_Python知识点概要(3)函数,总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部