list和字符串关于list的判断,我们常用的判断有两种,一种是刚才介绍的==,还有一种是is 。我们有时候也会简单实用is来判断,那么这两者有什么区别呢?我们来看下面的例子:
a = [1, 2, 3, 4]# Point a at a new list, [1, 2, 3, 4]b = a# Point b at what a is pointing tob is a# => True, a and b refer to the same objectb == a# => True, a's and b's objects are equalb = [1, 2, 3, 4]# Point b at a new list, [1, 2, 3, 4]b is a# => False, a and b do not refer to the same objectb == a# => True, a's and b's objects are equal复制代码
Python是全引用的语言,其中的对象都使用引用来表示 。is判断的就是两个引用是否指向同一个对象,而==则是判断两个引用指向的具体内容是否相等 。举个例子,如果我们把引用比喻成地址的话,is就是判断两个变量的是否指向同一个地址,比如说都是沿河东路XX号 。而==则是判断这两个地址的收件人是否都叫张三 。
显然,住在同一个地址的人一定都叫张三,但是住在不同地址的两个人也可以都叫张三,也可以叫不同的名字 。所以如果a is b,那么a == b一定成立,反之则不然 。
Python当中对字符串的限制比较松,双引号和单引号都可以表示字符串,看个人喜好使用单引号或者是双引号 。我个人比较喜欢单引号,因为写起来方便 。
字符串也支持+操作,表示两个字符串相连 。除此之外,我们把两个字符串写在一起,即使没有+,Python也会为我们拼接:
# Strings are created with " or '"This is a string."'This is also a string.'# Strings can be added too! But try not to do this."Hello " + "world!"# => "Hello world!"# String literals (but not variables) can be concatenated without using '+'"Hello " "world!"# => "Hello world!"复制代码
我们可以使用[]来查找字符串当中某个位置的字符,用len来计算字符串的长度 。
# A string can be treated like a list of characters"This is a string"[0]# => 'T'# You can find the length of a stringlen("This is a string")# => 16复制代码
我们可以在字符串前面加上f表示格式操作,并且在格式操作当中也支持运算,比如可以嵌套上len函数等 。不过要注意,只有Python3.6以上的版本支持f操作 。
# You can also format using f-strings or formatted string literals (in Python 3.6+)name = "Reiko"f"She said her name is {name}." # => "She said her name is Reiko"# You can basically put any Python statement inside the braces and it will be output in the string.f"{name} is {len(name)} characters long." # => "Reiko is 5 characters long."复制代码
最后是None的判断,在Python当中None也是一个对象,所有为None的变量都会指向这个对象 。根据我们前面所说的,既然所有的None都指向同一个地址,我们需要判断一个变量是否是None的时候,可以使用is来进行判断,当然用==也是可以的,不过我们通常使用is 。
# None is an objectNone# => None# Don't use the equality "==" symbol to compare objects to None# Use "is" instead. This checks for equality of object identity."etc" is None# => FalseNone is None# => True复制代码
理解了None之后,我们再回到之前介绍过的bool()函数,它的用途其实就是判断值是否是空 。所有类型的默认空值会被返回False,否则都是True 。比如0,"",[], {}, ()等 。
# None, 0, and empty strings/lists/dicts/tuples all evaluate to False.# All other values are Truebool(None)# => Falsebool(0)# => Falsebool("")# => Falsebool([])# => Falsebool({})# => Falsebool(())# => False
除了上面这些值以外的所有值传入都会得到True 。
变量与集合输入输出Python当中的标准输入输出是input和print 。
print会输出一个字符串,如果传入的不是字符串会自动调用__str__方法转成字符串进行输出 。默认输出会自动换行,如果想要以不同的字符结尾代替换行,可以传入end参数:
# Python has a print functionprint("I'm Python. Nice to meet you!")# => I'm Python. Nice to meet you!# By default the print function also prints out a newline at the end.# Use the optional argument end to change the end string.print("Hello, World", end="!")# => Hello, World!复制代码
使用input时,Python会在命令行接收一行字符串作为输入 。可以在input当中传入字符串,会被当成提示输出:
# Simple way to get input data from consoleinput_string_var = input("Enter some data: ") # Returns the data as a string# Note: In earlier versions of Python, input() method was named as raw_input()复制代码
推荐阅读
- 详解 Python 的二元算术运算,为什么说减法只是语法糖?
- 雷达模拟:用python的pygame实现和代码分析
- 如何实现一个优雅的Python的Json序列化库
- 教你在几分钟内构建一个Python包
- Mac 上安装 pyenv 使用多版本python开发项目
- 微信群总是有人发广告?看我用Python写一个机器人消灭他
- 用Python实现多层感知器神经网络
- Python 中的数字到底是什么?
- 如何建立一个完美的 Python 项目
- 用python制作炫酷的滚动地球