• ベストアンサー

python の引数についてですがですが、

python の引数についてですがですが、 def sum (x1, x2=o, x3): return x1 + x2 + x3 これがなぜ文法上間違っているのかよくわかりません。よろしくお願いします。

  • Python
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8023/17148)
回答No.1

既定値のない引数は既定値のある引数の後にはおけません。

関連するQ&A

  • VBAからPythonを動かしたいのですが…

    いつもお世話になっております。 icevainと申します。 python超初心者です。 【質問】 『VBAでPythonを動かす』という興味のあるサイトを見つけました。 https://qiita.com/O_LUPAN/items/1ceb5c950ff40f3558ab サイトのpythonコード #ここから import sys def sum(suji1, suji2): return suji1 + suji2 if __name__ == "__main__": argv = sys.argv suji1 = str(argv[1]) suji2 = str(argv[2]) total = sum(suji1, suji2) print(total) #ここまで サイトのpythonコードを無理やり変更して、 #ここから import sys def sum(suji1, suji2): rst="OK" return rst if __name__ == "__main__": argv = sys.argv suji1 = str(argv[1]) suji2 = str(argv[2]) total = sum(suji1, suji2) print(total) #ここまで OKがかえってくると思ったのですが、 0がかえってきてしまいます。 OKをかえすにはどうすればよいのかわかりません。 お分かりの方おりましたらご協力お願い致します。

  • Pythonでの関数呼び出し

    現在pythonでのプログラミングをしています。 例えば下のように関数を作るとglobal errorが発生します。 pythonでは引数で関数名を受け取らずに関数内から他の関数を呼び出すことはできないのでしょうか? よろしくお願いします。 ***************************************** def a():   b() def b():   print "test" a() *****************************************

  • pythonの関数内での関数の定義について

    Python Cookbook 3rd の2章6節の内容でわからないことがあります。 コード import re #サンプルテキスト text = 'UPPER PYTHON, lower python, Mixed Python' #正規表現で文字のケースに合わせて置換する def matchcase(word) .....def replace(m): ..........text = m.group() ..........if text.isupper(): ...............return word.upper() ..........elif text.islower() ...............return word.lower() ..........elif text[0].isupper(): ...............return word.capitalize() ..........else: ..............return word .....return replace #実行分 re.sub('python', matches('snake'), text, flags=re.IGNORECASE) #実行結果 >>>'UPPER SNAKE, lower snake, Mixed Snake' このサンプルコードのmatchcase内のreplace関数に引数を渡していないと思うのですが、どのような仕組みでこのコードは動いているのでしょうか? m.group()とあるので実行分のre.sub(...)でのマッチしたという情報がreplace(m)のmに渡されているだろうとは思うのですが、なぜ引数を指定せずにそのようなことが起こるのかが理解できません。 何卒よろしくお願いします。

  • 関数の引数と実引数の取り扱いについて

    C言語初心者です. 関数の引数と実引数の取り扱いについて,教えていただきたいことがあります. 例えば,2変数の和を求める関数を考えると,以下のようになると思います. #include <stdio.h> double sum(double x, double y); int main(void) { double a, b, wa; a=2.0; b=3.0; wa=sum(a,b); return 0; } double sum(double x, double y) { double total; total=x+y; return total; } このとき,mainプログラムでは,a,bふたつの変数を定義しておいて,関数sumに入れて計算させているわけですが,mainプログラムで変数x,yを定義しておいて,以下のようなプログラムにするのはありでしょうか? 参考書などをみると,前者のように取り扱っているようなのですが,試しに後者で実行させてみても同じ結果となりました. #include <stdio.h> double sum(double x, double y); int main(void) { double a, b, wa; a=2.0; b=3.0; wa=sum(a,b); return 0; } double sum(double x, double y) { double total; total=x+y; return total; }

  • python return 関数

    pythonで以下のようなコードがありました。 returnでメソッド内のメソッドを返すのは、どういう意味があるのでしょうか? 仕組みが分かっていません。 よろしくおねがいします。 class OkWave(object): @classmethod def funcA(cls ,abc,def): def funcB(self, xyz): 何かの処理P return funcB

  • Pythonにて不明な部分

    あるPythonコードからの抽出です。 Synset = namedtuple('Synset', 'synset pos name src') def getSynset(synset): print synset x = "select * from synset where synset='" + synset + "';" print x cur = conn.execute(x) return Synset(*cur.fetchone()) このgetSynsetを呼んだ時に、どのような内容が返されるか分かりません。 特に *cur の"*"は機能は何でしょうか。Cならポインタが指す内容ですが、Pythonにポインタは無いと思います。

  • python

    pythonについての質問です。 def S_sa(k=1) for step in xrange(k) : if step == 0 : print 'a' else print 'b' というコードがあって、なぜかprint aが実行されるのはなぜでしょうか? xrangeのreturnは1ではないのでしょうか?

  • python: def関数での記述arg=

    python: def関数での()記述内にarg=を書く意味と働き pythonで、defで関数定義をする際、引数を並べるやり方は理解したのですが、arg = と記述する意味ができずにいます 図のAでは実行すると100を出力します 5行目 f(arg = i)の ”arg =” の文法というか、これがはたしている役割がよくわかりません ためしにBのように arg= を撤去して、引数をiたった1つにすると9行目でエラーになります ( f(i)とするとエラーにならない) Cがエラー出ない理由もわかります 質問: 1) Bにおいて、5行目で arg = の果たしている役割を教えてください 2) Bにおいて9行目でf()では関数を呼び出せていないのは、arg = の不在と関係あると想像できますが、そのロジックを教えてください 【回答上のご注意】 回答は、解答(答え)を求めています わたしはプログラマーではないので、昭和的な「自分で考えろ」的なものは求めていません わからなければ答えない自由もあなたにはあります 不明点があれば説明いたします

  • pythonのargparseで引数の数の可変

    現在、pythonのプログラムで、コマンドにオプションを付けて、それによって戻ってくる結果を表示するようにしたいと思い作成しています。 それで、次のようなプログラムを作ることができました。 $ python pythonProg.py -s 5 5 5 5 5 5 5+5+5 == 15 (githubでの現在のソースコード内容) https://github.com/KenjiMaehara/raspberryPiTCPClient/blob/testBranch20170201_02/testSpi161101/pythonProg.py 現在、-sのオプションと3つの引数x,y,zを渡すと、x,y,zの総和を表示するようにしているのですが、 引数の数を2つにした場合、次のようなエラーが出てきます。 $ python pythonProg.py -s 5 5 usage: pythonProg.py [-h] [-v | -q | -s] x y z pythonProg.py: error: too few arguments ”argumentsが少ない”というエラーなのでしょうが、引数を3つ以外でも総和を計算できるようにすることはできますでしょうか? 現在のソースコード内容な下記のような感じです。 (pythonProg.pyのファイル内容) import argparse parser = argparse.ArgumentParser() group = parser.add_mutually_exclusive_group() group.add_argument("-v", "--verbose", action="store_true") group.add_argument("-q", "--quiet", action="store_true") group.add_argument("-s", "--sum", action="store_true") parser.add_argument("x", type=int, help="the base") parser.add_argument("y", type=int, help="the exponent") parser.add_argument("z", type=int, help="the exponent") args = parser.parse_args() answer = args.x+args.y answer02 = args.x+args.y+args.z (中略) どうぞ、宜しくお願い致します。

  • コマンドラインから引数を渡したいのですが・・・

    VC.NETで参考書に載っていた下のようなコードを書きました。 #include <iostream> #include <cstdlib> using namespace std; int main (int argc, char *argv[]) { int sum; if (argc != 3) { cout << "引数の個数が違います。"; return 1; } sum = atoi (argv[1]) + atoi (argv[2]); cout << "合計=" << sum << '\n'; return 0; } しかしながら、引数の個数が違います。としか出力されません。どうすればよろしいでしょうか?