天天看點

Python 中方法參數 * 和 ** 的例子

在python中* 和 ** 有特殊含義,他們與函數有關,在函數被調用時和函數聲明時有着不同的行為。此處*号不代表c/c++的指針。

其中 * 表示的是元祖或是清單,而 ** 則表示字典

以下為 ** 的例子:

<code>01</code>

<code>#--------------------第一種方式----------------------#</code>

<code>02</code>

<code>import</code> <code>httplib</code>

<code>03</code>

<code>def</code> <code>check_web_server(host,port,path):</code>

<code>04</code>

<code> </code><code>h </code><code>=</code> <code>httplib.httpconnection(host,port)</code>

<code>05</code>

<code> </code><code>h.request(</code><code>'get'</code><code>,path)</code>

<code>06</code>

<code> </code><code>resp </code><code>=</code> <code>h.getresponse()</code>

<code>07</code>

<code> </code><code>print</code> <code>'http response'</code>

<code>08</code>

<code> </code><code>print</code> <code>'        status ='</code><code>,resp.status</code>

<code>09</code>

<code> </code><code>print</code> <code>'        reason ='</code><code>,resp.reason</code>

<code>10</code>

<code> </code><code>print</code> <code>'http headers:'</code>

<code>11</code>

<code> </code><code>for</code> <code>hdr </code><code>in</code> <code>resp.getheaders():</code>

<code>12</code>

<code> </code><code>print</code> <code>'        %s : %s'</code> <code>%</code> <code>hdr</code>

<code>13</code>

<code>14</code>

<code>15</code>

<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>

<code>16</code>

<code> </code><code>http_info </code><code>=</code> <code>{</code><code>'host'</code><code>:</code><code>'www.baidu.com'</code><code>,</code><code>'port'</code><code>:</code><code>'80'</code><code>,</code><code>'path'</code><code>:</code><code>'/'</code><code>}</code>

<code>17</code>

<code> </code><code>check_web_server(</code><code>*</code><code>*</code><code>http_info)</code>

另一種方式:

<code>#--------------------第二種方式----------------------#</code>

<code>def</code> <code>check_web_server(</code><code>*</code><code>*</code><code>http_info):</code>

<code> </code><code>args_key </code><code>=</code> <code>{</code><code>'host'</code><code>,</code><code>'port'</code><code>,</code><code>'path'</code><code>}</code>

<code> </code><code>args </code><code>=</code> <code>{}</code>

<code> </code><code>#此處進行參數的周遊</code>

<code> </code><code>#在函數聲明的時候使用這種方式有個不好的地方就是 不能進行 參數預設值</code>

<code> </code><code>for</code> <code>key </code><code>in</code> <code>args_key:</code>

<code> </code><code>if</code> <code>key </code><code>in</code> <code>http_info:</code>

<code> </code><code>args[key] </code><code>=</code> <code>http_info[key]</code>

<code> </code><code>else</code><code>:</code>

<code> </code><code>args[key] </code><code>=</code> <code>''</code>

<code> </code><code>h </code><code>=</code> <code>httplib.httpconnection(args[</code><code>'host'</code><code>],args[</code><code>'port'</code><code>])</code>

<code> </code><code>h.request(</code><code>'get'</code><code>,args[</code><code>'path'</code><code>])</code>

<code>18</code>

<code>19</code>

<code>20</code>

<code>21</code>

<code>22</code>

<code>23</code>

<code>24</code>

<code>25</code>

<code>26</code>

<code>27</code>

<code>28</code>

<code> </code><code>check_web_server(host</code><code>=</code> <code>'www.baidu.com'</code> <code>,port </code><code>=</code> <code>'80'</code><code>,path </code><code>=</code> <code>'/'</code><code>)</code>

<code>29</code>

<code>30</code>