Python在Python中的含义是什么?

Python在Python中的含义是什么? 下面的代码是做什么的?

例如…

if len(sys.argv) < 2: sys.exit('Usage: %s database-name' % sys.argv[0]) if not os.path.exists(sys.argv[1]): sys.exit('ERROR: Database %s was not found!' % sys.argv[1]) 

这是一个string格式化语法(从C中借用)。

请参阅“格式化string” :

Python支持将string格式化为值。 虽然这可能包含非常复杂的expression式,但最基本的用法是使用%s占位符将值插入到string中。

编辑:这是一个非常简单的例子:

 name = raw_input("who are you?") print "hello %s" % (name,) 

%s令牌允许我插入(并可能格式化)一个string。 请注意, %s标记被replace为我在%符号后传递给string的任何内容。 还要注意,我在这里也使用了一个元组(当你只有一个使用元组的string是可选的)来说明可以在一个语句中插入和格式化多个string。

安德鲁的答案是好的。

而只是为了帮助你多一点,这里是如何在一个string中使用多个格式

 "Hello %s, my name is %s" % ('john', 'mike') # Hello john, my name is mike". 

如果您使用的是整数而不是string,请使用%d而不是%s。

 "My name is %s and i'm %d" % ('john', 12) #My name is john and i'm 12 

format方法是在Python 2.6中引入的。 这是更有能力,并没有太多难以使用:

 >>> "Hello {}, my name is {}".format('john', 'mike') 'Hello john, my name is mike'. >>> "{1}, {0}".format('world', 'Hello') 'Hello, world' >>> "{greeting}, {}".format('world', greeting='Hello') 'Hello, world' 

当使用python的string格式化function时,'%s'表示'string'的转换types。 更具体地说,'%s'使用str()函数将指定的值转换为string。 将此与使用repr()函数进行值转换的'%r'转换types进行比较。

看看下面的内容: http : //docs.python.org/library/stdtypes.html#string-formatting-operations

回答你的第二个问题:这个代码是做什么的?

这是接受命令行参数的Python脚本的相当标准的错误检查代码。

所以第一个if语句的意思是:如果你没有通过我的论证,我会告诉你未来你应该怎么通过我,例如你会在屏幕上看到这个:

 Usage: myscript.py database-name 

下一个if语句将检查传递给脚本的'database-name'是否确实存在于文件系统中。 如果没有,你会得到这样的消息:

 ERROR: Database database-name was not found! 

从文档 :

argv [0]是脚本名称(不pipe它是否是完整的path名,它取决于操作系统)。 如果使用解释器的-c命令行选项执行命令,argv [0]被设置为string'-c'。 如果没有脚本名称被传递给Python解释器,argv [0]是空string。

%s被称为格式说明符,专门用于string。 正如本书所讨论的数据types一样,您可以再看看几个数据types,每个数据types都是特定的。 每个说明符在string中充当该types的占位符; 在string之后,string外部的%符号表示在此之后,要插入到格式说明符中的所有值都将显示在该string中。 您可能会注意到括号。 这告诉string,它应该期望看到一个序列,该序列包含要由string填充其格式说明符的值。 一个简单的方法来想象它是想象%s是一个存储箱,它将括号中的值保存起来。 如果你想要做多个值,你可以简单地添加另一个格式说明符:
“>>>”John%s%s“%(”Every“,”Man“)
John Everyman'