这里尝试总结一波python里的星号* 用法,如有写得不到位,欢迎评论区交流!看下文…
数值乘法
最常见的用法,星号用在两个数之间实现两个数的乘法计算
e.g.
mul = 1 * 2
print(mul)
Output:
2
成员倍增器
如果星号前面的操作数是序列,比如列表、元组、字符串等,后操作数是n,那么是对序列的成员倍增,列表的成员数量会变成原来的n倍。
e.g.
list = ['hello'] * 2
print(list)
Output:
['hello', 'hello']
幂运算
两个星号 ** 表示对星号前面的操作数执行后面操作数的幂运算,简单点说就是求多少次方的计算。
e.g.
print(10 ** 3)
Output:
1000
提取操作符
有时候在打印数据时,需要对原始数据进行输出,并且在数据之间插入一些分隔符。一般想到的是用循环处理,但是看起来语句有些啰里啰唆的。
e.g.
print(' '.join(['sunday', 'monday', 'tuesday', 'wednesday']))
print(' '.join('helloworld!'))
Output:
sunday monday tuesday wednesday
h e l l o w o r l d !
在这里要介绍的是更方便的方法,那就是用星号对迭代类型数据做提取处理。
1. 单星号 * 操作
调用函数时,在输入参数前添加星号 * 可以对参数执行提取操作,比如对列表、元组、字符串等迭代类型的输入参数做提取之后,迭代类型的数据元素会被逐个取出。
e.g.
print(*'list')
Output:
l i s t
e.g.
print(*['hello', 'world', '!'])
Output:
hello world !
在字典类型数据前添加单个星号 *,仅对字典数据键部分执行提取,然后以位置参数的形式输入函数。
def foobar(param1=None, param4=None):
return "{}{}".format(param4, param1)
values = {"param1": "foo", "param2": "bar"}
print(foobar(*values))
Output:
param2param1
2. 双星号 ** 操作
在字典类型数据前添加两个星号 **,对字典数据执行提取,然后以关键字参数的形式输入函数。
def foobar(param1=None, param4=None):
return "{}{}".format(param4, param1)
values = {"param1": "foo", "param4": "bar"}
print(foobar(**values))
Output:
barfoo
函数参数修饰符
- 添加星号 * 在函数的参数前时,表示该参数是不定数量的位置参数。
很多时候向函数输入的位置参数是不定数目的,这样子就可以借助星号修饰符来表述了。在函数内该参数存储的数据被构造成元组类型,也就是说传入的不定参数被包含在元组内。
e.g.
def add(*args):
return sum(args)
print(add(1, 2, 3, 4, 5))
Output:
15
- 添加两个星号 ** 在函数的参数前时,表示该参数是不定数量的关键字参数。
向函数输入的不定数目的参数除了可以是位置参数之外,也可以是关键字参数。这个时候就不能用单个星号做修饰符了,而是双星号 **,比如 **kwargs。
在函数内该不定数目参数存储的数据属于字典类型,也就是说传入的不定参数被包含在字典内。
e.g.
def food_type(**kwargs):
for item in kwargs:
print(f"{kwargs[item]} belongs to {item}")
food_type(fruit = 'apple', meat = 'animal', vegetable = 'potato')
Output:
apple belongs to fruit
animal belongs to meat
potato belongs to vegetable