在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>