函数比较复杂python python 复杂度( 二 )


Python是全引用的语言,其中的对象都使用引用来表示 。is判断的就是 两个引用是否指向同一个对象 ,而==则是判断两个引用指向的具体内容是否相等 。举个例子,如果我们把引用比喻成地址的话 , is就是判断两个变量的是否指向同一个地址,比如说都是沿河东路XX号 。而==则是判断这两个地址的收件人是否都叫张三 。
显然 , 住在同一个地址的人一定都叫张三 , 但是住在不同地址的两个人也可以都叫张三 , 也可以叫不同的名字 。所以如果a is b,那么a == b一定成立,反之则不然 。
Python当中对字符串的限制比较松,双引号和单引号都可以表示字符串 ,看个人喜好使用单引号或者是双引号 。我个人比较喜欢单引号,因为写起来方便 。
字符串也支持+操作 , 表示两个字符串相连 。除此之外,我们把两个字符串写在一起 , 即使没有+,Python也会为我们拼接:
我们可以使用[]来查找字符串当中某个位置的字符,用 len 来计算字符串的长度 。
我们可以在字符串前面 加上f表示格式操作 ,并且在格式操作当中也支持运算,比如可以嵌套上len函数等 。不过要注意,只有Python3.6以上的版本支持f操作 。
最后是None的判断,在Python当中None也是一个对象, 所有为None的变量都会指向这个对象。根据我们前面所说的,既然所有的None都指向同一个地址,我们需要判断一个变量是否是None的时候,可以使用is来进行判断,当然用==也是可以的,不过我们通常使用is 。
理解了None之后,我们再回到之前介绍过的bool()函数,它的用途其实就是判断值是否是空 。所有类型的 默认空值会被返回False,否则都是True 。比如0,"",[], {}, ()等 。
除了上面这些值以外的所有值传入都会得到True 。
Python当中的标准输入输出是 input和print。
print会输出一个字符串,如果传入的不是字符串会自动调用__str__方法转成字符串进行输出 。默认输出会自动换行  , 如果想要以不同的字符结尾代替换行 , 可以传入end参数:
使用input时,Python会在命令行接收一行字符串作为输入 。可以在input当中传入字符串,会被当成提示输出:
Python支持 三元表达式  , 但是语法和C++不同,使用if else结构 , 写成:
上段代码等价于:
Python中用[]表示空的list , 我们也可以直接在其中填充元素进行初始化:
使用append和pop可以在list的末尾插入或者删除元素:
list可以通过[]加上下标访问指定位置的元素,如果是负数,则表示 倒序访问。-1表示最后一个元素,-2表示倒数第二个,以此类推 。如果访问的元素超过数组长度,则会出发 IndexError 的错误 。
list支持切片操作 , 所谓的切片则是从原list当中 拷贝 出指定的一段 。我们用start: end的格式来获取切片 , 注意,这是一个 左闭右开区间。如果留空表示全部获?。颐且部梢远钔庠偌尤胍桓霾问硎静匠?,比如[1:5:2]表示从1号位置开始 , 步长为2获取元素 。得到的结果为[1, 3] 。如果步长设置成-1则代表反向遍历 。
如果我们要指定一段区间倒序,则前面的start和end也需要反过来,例如我想要获取[3: 6]区间的倒序,应该写成[6:3:-1] 。
只写一个:,表示全部拷贝,如果用is判断拷贝前后的list会得到False 。可以使用del删除指定位置的元素,或者可以使用remove方法 。
insert方法可以 指定位置插入元素,index方法可以查询某个元素第一次出现的下标 。
list可以进行加法运算,两个list相加表示list当中的元素合并 。等价于使用extend 方法:

推荐阅读