base64.b64encodeの構文の中身


やりたいことはベーシック認証を突破してあるHPからデータをダウンロードする事です。  
この後 URL,保存するファイルのパスを指定を指定していきます。  
教わったプログラムは下記のプログラムを含みます。

`format`関数だと、`'任意の文字列{}任意の文字列'.format(変数)`と記載をすると思っています。  
`{}`の間の`:`がどういう意味を持つのか、`format`関数の`,`がどういう意味を持つのか、なぜここに入れればできるのかを教えていただけませんでしょうか。

[code]

    import urllib.request 
    import base64 
     
    user = 'abcde'
    password = '12345'
    basic_user_and_pasword = base64.b64encode('{}:{}'.format(user, password).encode('utf-8'))
    
[/code]




> `format`関数だと、`'任意の文字列{}任意の文字列'.format(変数)`と記載をすると思っています。

その記述でどこまでご理解されているのか掴みかねるのですが、

[code]

    '任意の文字列1{}任意の文字列2{}任意の文字列3'.format(式1,式2)
    
[/code]

と言うのも正しい[`format`メソッド](https://docs.python.org/3.4/library/string.html)の使い方であり、`式1`の値が1つ目の`{}`に、`式2`の値が2つ目の`{}`に埋め込まれる形になります。

ここで`任意の文字列1`と`任意の文字列3`を空、`任意の文字列2`を`:`に置き換えてやると、ご質問にある、

[code]

    '{}:{}'.format(user, password)
    
[/code]

と言う式が出来上がります。

つまり、1つ目の`{}`を`user`の値で、2つ目の`{}`を`password`で置き換えた文字列を作れ、と言う意味ですね。

その部分を

[code]

    (user + ':' + password)
    
[/code]

と書いても全く同じ結果になります。

この場合の`:`には特別の意味はなく、単に結果にそのまま埋め込めたい「任意の文字列」でしかありません。




> `format`関数だと、`'任意の文字列{}任意の文字列'.format(変数)`と記載をすると思っています。

その記述でどこまでご理解されているのか掴みかねるのですが、

[code]

    '任意の文字列1{}任意の文字列2{}任意の文字列3'.format(式1,式2)
    
[/code]

と言うのも正しい[`format`メソッド](https://docs.python.org/3.4/library/string.html)の使い方であり、`式1`の値が1つ目の`{}`に、`式2`の値が2つ目の`{}`に埋め込まれる形になります。

ここで`任意の文字列1`と`任意の文字列3`を空、`任意の文字列2`を`:`に置き換えてやると、ご質問にある、

[code]

    '{}:{}'.format(user, password)
    
[/code]

と言う式が出来上がります。

つまり、1つ目の`{}`を`user`の値で、2つ目の`{}`を`password`で置き換えた文字列を作れ、と言う意味ですね。

その部分を

[code]

    (user + ':' + password)
    
[/code]

と書いても全く同じ結果になります。

この場合の`:`には特別の意味はなく、単に結果にそのまま埋め込めたい「任意の文字列」でしかありません。

