助け合いフォーラム
この問題はプレミアムコンテンツです。
関数定義部分の引数の使用方法について
初歩的な質問で恐縮ですが、教えて下さい。
この問題の
def network_device_list(dnac, token):
の引数で、dnacはそれより上の行で既に現れたもので、tokenは現れて
いないものになっています。
この部分のdnacは、別の名前でもよいという理解で正しいでしょうか。
例えば
def network_device_list(test1, token):
として
その下を url = "https://{}/api/v1/network-device".format(test1['host'])
の様に、関数内で名前をあわせておけばよく、そのあとで
network_dvice_list(dnac, login)
としても、同じでしょうか。
また、url = "https://{}/api/----- の {} の部分は、どの様な
意味になるでしょうか。
すみませんが、ご存じのかたがおられましたら教えて下さい。
宜しくお願いします。
この問題の
def network_device_list(dnac, token):
の引数で、dnacはそれより上の行で既に現れたもので、tokenは現れて
いないものになっています。この部分のdnacは、別の名前でもよいという理解で正しいでしょうか。
別の名前でも良い、というか、ここはプログラミング言語の割と一般的な話になります。
def
で始まる文は「関数定義」と言って、「こう言う名前で、こう言う引数をとり、こう言う処理をするもの」を記述しているものです。例示されたところで言うと、「引数に (関数内部で使用する名前として)dnac
, token
と言う2つの引数を取る network_device_list
と言う関数を定義」していると言うことになります。そして、ここについてはご認識の通り「関数内で名前を合わせておけば良い」です。なので
そのあとで
network_dvice_list(dnac, login)
としても、同じでしょうか。
であってます。
変な例を出せば、こう言うのも問題なく動作するPythonコードです。関数の中で名前の不整合がなければ、関数の外で使ってる変数をそのままセットできます。
lower = 100
higher = 10
def kakezan(kakeru_kazu, kakerareru_kazu):
return kakerareru_kazu * kakeru_kazu
print(kakezan(higher, lower))
また、url = "https://{}/api/----- の {} の部分は、どの様な
意味になるでしょうか。
これは str.format()
と言う、文字列整形の様式ですね。省略されてますが設問のコードをちゃんと書けばこうですよね。
url = "https://{}/api/v1/network-device".format(host)
ここでは
- 文字列=
https://{}/api/v1/network-device
- 文字列.format() に渡す引数は
host
- format構文に従い、
{}(置換指定)
にhost
の値をセットする host
には(これは多分network_device_list
関数のものなので)引数となる辞書dnac
のhost
キーの値をセットする
と言う指定になっているので、最終的には https://sandboxdnac.cisco.com/api/v1/network-device
と言う文字列にする、と言うことになるのですね。
formatに指定できるパラメータは以下のドキュメントから「書式指定文字列の文法」とかへ飛んで見てみると色々見えてくるかと思います。
https://docs.python.org/ja/3/library/stdtypes.html#str.format
コメント
この投稿に対して返信しませんか?
k kz5835
2023/05/14 01:56
arashi1977様 丁寧なご回答、誠に有難うございます。 大変勉強になりました。 有難うございました。