Pythonでの*と**の違い
2567 ワード
*と**の違い
*用途一:乗算は、数学計算 に用いることができる文字列、リストの繰り返し
*用途2:複数のパラメータを受け入れる*はメソッドのパラメータとして使用する、パラメータを受信するときに複数のパラメータ を受信することができる.
*用途3:実パラメトリックとして渡され、自動的にパケットが解除され、複数の単一変数パラメータに渡されます. test(args):の役割は、シーケンスargsの各要素を位置パラメータとして渡すことです.例えば、上記のコードはargsが(1,2,3)に等しい場合、test(1,2,3) に等価である.
*用途4:キーワードパラメータの命名キーワードパラメータの名前を制限する場合は、キーワードパラメータとしてcityおよびjobのみを受信するなど、名前付きキーワードパラメータを使用できます. ネーミングキーパラメータcityにデフォルト値があるため、呼び出し時にcityパラメータ を入力しなくてもよい.関数定義に可変パラメータが既に存在する場合、後に続く名前付きキーワードパラメータには特別な区切り文字*が必要なくなります. 名前付きキーワードパラメータは、位置パラメータとは異なるパラメータ名に入力する必要があります.パラメータ名が入力されていない場合、呼び出しは とエラーを報告します.名前付きキーワードパラメータを使用する場合は、特に、可変パラメータがない場合は、特殊な区切り記号として追加する必要があります.欠けている場合、Pythonインタプリタは、位置パラメータと名前付きキーワードパラメータ を認識できません.
**用途 2**10=1024 **重要なパラメータのように値を割り当てる形式の複数の実パラメータを辞書に入れる(すなわち、関数のパラメータを辞書に変換する) .**は、変数が辞書の場合、それを分解し、関数に個別に渡します.
*用途一:乗算
key="a"*5
print(key) #aaaaa
word=[2,"3"]*4
print(word) #[2, '3', 2, '3', 2, '3', 2, '3']
*用途2:複数のパラメータを受け入れる
def sum(*num):
return num[0]+num[1]+num[2]+num[3]
print(sum(1, 3, 5, 7)) #16
*用途3:実パラメトリックとして渡され、自動的にパケットが解除され、複数の単一変数パラメータに渡されます.
import sys
params=sys.argv
print("cmdLine:\t"+params[0])
# print(" :{0[1]}, :{0[2]}, :{0[3]}, :{0[4]}, :{0[5]}, :{0[6]}, :{0[7]}" \
# .format(params))
print(" :{1}, :{2}, :{3}, :{4}, :{5}, :{6}, :{7}" \
.format(*params))
a=[1,2,3,4]
print(*a,sep='
')
'''
1
2
3
4
'''
*用途4:キーワードパラメータの命名
def person(name, age, *, city='Beijing', job):
print(name, age, city, job)
person('Jack', 24, job='Engineer')
Jack 24 Beijing Engineer
def person(name, age, *args, city, job):
print(name, age, args, city, job)
def person(name, age, *args, city, job):
print(name, age, args, city, job)
person('Jack', 24, 'Beijing', 'Engineer')
Traceback (most recent call last):
File "", line 1, in
TypeError: person() takes 2 positional arguments but 4 were given
**用途
def demo(**p):
print(type(p.items()))
for i in p.items():
print(i)
demo(x=1, y=2)
'''
('x', 1)
('y', 2)
'''
dic={'a':1,'b':2,'c':3}
string='{a}-{b}-{c}'.format(**dic)
print(string)
# 1-2-3