Python 3方法多参数传递语法及str.maketrans()多字符集处理问询
嘿,我来帮你解答这两个Python相关的问题:
1. Python 3中向方法传递多个参数的正确语法
传递多个参数主要有几种常用的方式,根据参数类型和场景选择就行:
- 位置参数:按方法定义的参数顺序直接传值,是最基础的用法。比如定义方法
def calculate(a, b, op): return a + b if op == 'add' else a - b,调用时写calculate(5, 3, 'add')就可以。 - 关键字参数:通过参数名指定值,顺序可以随意调整,可读性更强。比如上面的方法可以写成
calculate(op='sub', a=5, b=3),即使顺序不对也能正确执行。 - 可变位置参数(*args):如果不确定要传多少个位置参数,方法定义时用
*args,它会把传入的多个参数打包成元组。比如def sum_all(*args): return sum(args),调用sum_all(1,2,3,4)就能得到10。调用时还能把列表/元组拆包传递,比如nums = [10,20,30],用sum_all(*nums)即可。 - **可变关键字参数(kwargs):用
**kwargs可以接收任意多个关键字参数,它们会被打包成字典。比如def print_user(**kwargs): print(f"Name: {kwargs['name']}, Age: {kwargs['age']}"),调用print_user(name='Oliver', age=28)就会输出对应的信息。同样,也可以拆包字典传递,比如user_info = {'name': 'Alice', 'age': 25},用print_user(**user_info)。
2. 一行代码移除字符串中的标点和数字
完全可以一行搞定!你现在分两次调用translate的思路是对的,但其实只要把要删除的字符集合合并成一个字符串,传给str.maketrans()的第三个参数z就好。
根据Python文档,str.maketrans(x[, y[, z]])的第三个参数z是一个字符串,所有出现在这个字符串里的字符都会被映射为None,也就是在translate操作时被删除。所以你只需要把string.punctuation和string.digits拼接起来,作为z参数传入:
import string a_string = "Hi! My phone is 123-4567." a_string = a_string.translate(str.maketrans('', '', string.punctuation + string.digits)) print(a_string) # 输出: Hi My phone is
这样一次translate操作就同时移除了所有标点和数字,不用分两次执行啦。
内容的提问来源于stack exchange,提问作者oliver
相关产品推荐
相关产品推荐

