def mysum(L):
return 0 if not L else L[0] + mysum(L[1:])
def mysum(L):
return L[0] if len(L) == 1 else L[0] + mysum(L[1:])
def mysum(L):
first, *rest = L
return first if not rest else first + mysum(rest)
- 後者の二つはまた、単一の文字列引数例えば
mysum('spam')
に取り組んでいます。 - 第3の変種は、オープン入力ファイル
mysum(open(name))
を含む任意のiterableで動作しますが、他のものはインデックスを使用するため、使用できません。 - ファンクションヘッダー
def mysum(first *rest)
は、3番目の変種と同様ですが、個々の引数が1つの繰り返し可能なものではないためです。
入力引数として(first, *rest)
の亜種がファイルでは機能しないことを意味していると思われますが、実験したところ、機能することがわかりました。明確化
# Code I tried:
def mysum(first, *rest):
return first if not rest else first + mysum(*rest)
mysum(*open("script1.py"))
が問題ありません。私は何のpythonが、その後見てしまうためmysum(open("script1.py"))
が動作しないだろうと思い
は[]
が真ではないので、それはつもり私に<_io.TextIOWrapper name='script1.py' mode='r' encoding='cp1252'>
を与えています意味first = open("script1.py
とrest = []
です。
と同じです。SOに関する質問は、外部リンクに依存しない自己完結型でなければなりません。また、コードは画像ではなくコピー可能なテキストの形式でなければなりません。 [質問するときにSOのコードイメージをアップロードできないのはなぜですか?](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code- on-so-when-asking-a-question) –
@ PM2Ringああ、ルーキーミスをほぼ犯したhaha – Dan