python笔记6_函数

python函数

函数声明时使用 def关键字,返回时使用 return关键字。
如果Python达到函数的尾部时仍然没有遇到return语句,就会自动返回None。

def my_function(x,y,z=10):
    if z>1:
        return z*(x+y)
    elif z<1:
        return z*(x-y)

其中x和y是位置参数,z是关键字参数,关键字参数可以设置默认值,函数调用可以重新传入或不传:

my_function(1,2,-1) # 1
my_function(2,3) # 50

注意:关键字参数必须跟在位置参数(如果有的话)后

def my_function(x,y=10,z):
    if z>1:
        return z*(x+y)
# 报错

也可以使用关键字参数向位置参数传参,制定参数名,颠倒参数位置顺序,在部分场景中,这样做有助于代码可读性。

my_function(y=5,x=1,z=-1) # 4

使用 global关键字 可以在函数内部给全局变量赋值

a = None
def func():
    global a
    a = []
    for i in range(10):
        a.append(i)
func()
ptint(a) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

返回多个值时,python格外美妙
实际上,返回的东西本质上依旧是一个对象,是一个元组,只不过根据元组的拆包原理,有了这样的写法:

def func2():
    a=1
    b=2
    c=3
    return a,b,c
res_a,res_b,res_c = func2()
print(res_a,res_b,res_c) # 1 2 3

在做一些字符串格式的调整时,如需要去除空格,移除标点符号,调整适当的大小写,

可以使用内建的字符串方法,结合标准库中的正则表达式模块re

import re
states = ['   Alabama ', 'Georgia! ', 'Georgia', 'georgia', 'FlOrIda', 'south    carolina##', 'West virginia? ']
def clean_str(strings):
    res = []
    for string in strings:
        string = string.strip() # 去除字符串两边的空格
        string = string.title() # 字符串首字母、空格后首字母大写
        string = re.sub('[?#!]','',string) # 利用正则表达式替换
        res.append(string)
    return res
clean_str(states)
#['Alabama', 'Georgia', 'Georgia', 'Georgia', 'Florida', 'South    Carolina', 'West Virginia']

还可以将逐步操作的函数写在一个列表里,做如下操作:

def fun_a(value):
    return re.sub('[!#?]','',value)
clean_funcs = [str.strip,fun_a,str.title]
def clean_strings(strings,funcs):
    res = []
    for string in strings:
        for func in funcs:
            string = func(string)
        res.append(string)
    return res
clean_strings(states,clean_funcs)
#['Alabama', 'Georgia', 'Georgia', 'Georgia', 'Florida', 'South    Carolina', 'West Virginia']

利用循环存放函数的列表,获得和上面相同的效果。

可以理解为:如果要对同一个对象做多次函数操作,先将函数格式转变为 函数名(处理对象) 就可以使用列表进行上述操作。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Woovong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值