我对它的含义或定义有些困惑.
是不是一些产生或计算新数据值的代码?(泽勒在他的书中说)
然后我想知道字符串数据类型是否是表达式.
如果是,那么eval()
当它的参数是一个字符串时该怎么办?
Zelle的书说eval(<string>)
评价string
作为一种表达,如果string
已经是一种表达,这究竟意味着什么呢?
如果string
不是表达,那怎么会发生print
呢?
Gor*_*son 24
表达式表示某些内容,如数字,字符串或类的实例.任何价值都是表达!
任何做某事的都是陈述.对变量或函数调用的任何赋值都是一个语句.表达式中该语句中包含的任何值.
foo = "hello"
是一个将foo赋给表达式"hello"的值的语句.由于代码"hello"
是一个简单的表达式,意味着它不包含任何操作,实际上没有任何内容被评估,因此foo只被分配给"hello
".更复杂的表达式实际上是评估事物,比如添加数字.使用单词表达式似乎让事情变得更加混乱表达式只不过是值,除非它们可以有加法或减法等操作.
eval
将字符串计算为python表达式.Eval确实将表达式作为参数.但是,由于每个值都是表达式,所以没有什么特别之处.说"eval以一个值作为一个参数"说的完全相同,但听起来更简单.:d
eval( "2+2" )
将字符串传递"2+2"
给函数.该函数计算字符串中包含的表达式,该表达式为4.
Zelle的书说将
eval(<string>)
字符串作为表达式进行求值,如果字符串已经是表达式,这究竟意味着什么呢?
任何字符串都是表达式,因为它表示一个值.但是,字符串中的内容绝对没有影响它作为表达式.如果是一个值,它就是一个表达式.当它被"评估为eval的表达式"时,字符串内的字符就像它们是python表达式一样被执行.
TL;DR:表达式是值和运算符的组合,并且始终计算为单个值。语句是所有其他指令。一些语句包含表达式。
一个表达式是一个指令联合值和运算符和始终计算到一个单一的值。
例如,这是一个表达式:
>>> 2 + 2
Run Code Online (Sandbox Code Playgroud)
2 是整数值,+ 是数学运算符。此表达式向下求值为单个整数值 4。
从技术上讲,这也是一个表达式:
>>> 4
Run Code Online (Sandbox Code Playgroud)
作为表达式,它的计算结果为单个值 4。
当我说值和运算符时,这不仅限于数学问题:
>>> 'You will be ' + str(int(myAge) + 1) + ' next year.'
Run Code Online (Sandbox Code Playgroud)
该myAge
变量的计算结果为其中的值。函数调用的int('5')
计算结果为函数的返回值5
。所有这些字符串值都与+
运算符组合在一起(在本例中,它是字符串连接运算符)。无论表达式有多大,它都会计算为单个值:在这种情况下,字符串值'You will be 6 next year.'
将此与statement形成对比,它是一条 Python 指令,不会计算为值。Python 语句几乎就是所有不是表达式的东西。这是一个赋值语句:
>>> spam = 2 + 2
Run Code Online (Sandbox Code Playgroud)
这是一个 if 语句:
>>> if spam == 4:
Run Code Online (Sandbox Code Playgroud)
这是一个无限循环的 while 语句:
>>> while True:
Run Code Online (Sandbox Code Playgroud)
请注意,这两个语句都包含表达式(even True
,其计算结果为单个值True
)。但并非所有语句都在其中使用表达式。这是一个中断语句:
>>> break
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
43898 次 |
最近记录: |