使用if语句与列表比较

时间:2013-08-29 13:34:09

标签: python

这是我的问题:在阅读有关python网络编程的书籍时,我偶然发现了这段代码:

import socket, sys
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

if sys.argv[1:] == ['server']:
    s.bind('127.0.0.1', PORT)
    ...
    ... 

等等。我的问题是if语句是否检查sys.argv列表中的任何元素(第一项除外)是否与'server'相等。我尝试在IDLE for Python 3.2中执行此操作,但它不起作用。本书适用于python 2.7,所以我也试过了,但它仍然有用。

4 个答案:

答案 0 :(得分:3)

不,它检查slice 1:形成的列表是否等于列表['server']

答案 1 :(得分:3)

sys.argv[0]是程序的名称,它被剥离。 sys.argv[1:] - 提供给程序的所有命令行参数。

if语句检查您的脚本只收到一个参数server

答案 2 :(得分:3)

不,这在任何版本的Python中都不起作用。唯一能做的就是检查从位置1开始的sys.argv只有一个元素,即'server'

答案 3 :(得分:2)

您可以使用以下结构检查'server'参数:

if 'server' in sys.argv[1:]:
    do_something()

将来,请使用argparse获取命令行参数。