美文网首页
2021-12-10 Python-13

2021-12-10 Python-13

作者: MaggieXie | 来源:发表于2021-12-10 20:30 被阅读0次

    自建函数

    1.命名空间、作用域和本地函数
    Python 变量有全局和局部两种作用范围。命名空间就是用来描述变量的作用域。
    一般来说在函数内部定义的变量和参数都是局部变量,除非进行特殊的说明,在函数外部定义的变量一般是全局变量。

    def func():
        a=[]
        for i in range(5):
            a.append(i)
        return a
    a
    #NameError: name 'a' is not defined
    #函数内部的变量再函数执行结束后,会被销毁,所以命名空间中不存在 a 变量。
    
    def func1():
        global b 
        b={'1':1,'2':2}
    func1
    b
    #在运行完函数且退出之后,命名空间仍然有 b 存在。
    
    

    2.返回多个值
    当需要返回多个值时,实际上是以元组形式返回。而元组形式可以以拆包的方式赋值给不同的变量。

    def f():
        a=5
        b=6
        c=7
        return a,b,c
    
    a,b,c=f()
    print(a,b,c)
    
    

    3.函数作为对象
    因为 Python 的函数是一个对象,可以作为元素添加到列表或者元组中,对变量进行批量处理。

    #清洗以下的数据
    #states=['  Alabama ','Georgia!','Georgia','georgia','FlorIda','south   carlina##','West virginia?']
    #清洗数据需要去除两端的空格,去除标点符号,开头为大写,其余全部小写,将相同的名称合并
    states=['  Alabama ','Georgia!','Georgia','georgia','FlorIda','south   carlina##','West virginia?']
    import re
    def clean_strings(strings):
        result=[]
        for i in strings:
            i=i.strip()
            i=re.sub('[!#?]','',i)
            i=i.title()
            result.append(i)
        result=set(result)
        return result
    clean_strings(states)
     
    #strip函数去除两端的空格;re是正则表达式模块,将标点符号替换成'',不占空格。title将开头字母大写
    #除了上述的方法之外,还可以将函数作为对象
    def remove_punctuations(i):
         return re.sub('[!#?]','',i)
    func=[str.strip,remove_punctuations,str.title]
    def clean_strings(strings,func):    
        result=[]
        for i in strings:
            for function in func:
                i=function(i)
            result.append(i)
        result=set(result)
        return result
    clean_strings(states,func)
    #结果为:{'Alabama', 'Florida', 'Georgia', 'South   Carlina', 'West Virginia'}
        
    

    4.匿名Lambda函数
    匿名函数通常包含了单个语句,使用 Lambda 关键词定义。

    #lambda x : x*2
    #表示对于x对象,返回 x*2 的值
    #也可以表示为
    def func_1(x):
        return x*2
    #只是匿名函数缺少函数名
    
    def do_something_to_list(listname,func):
        return [func(x) for x in listname]
    list_A=[1,2,3]
    do_something_to_list(list_A,lambda x : x**2)
    
    

    相关文章

      网友评论

          本文标题:2021-12-10 Python-13

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