欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

学习python中的需要注意的几点事项

程序员文章站 2022-05-04 14:30:47
1.python 中的 and 从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值; or 也是从左到有计算表达式,返回第一个为真的值; 其中数字 0 是假,其他都是真; 字符 "" 是假,其他都是真; 元组中的元素值是不允许修改的,但我们可以对元组进行连接组合 元组中的 ......

1.python 中的 and 从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值;

or 也是从左到有计算表达式,返回第一个为真的值;

其中数字 0 是假,其他都是真;

字符 "" 是假,其他都是真;

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

2.python 中数字有以下的表示方式:

  • 2 进制是以 0b 开头的: 例如: 0b11 则表示十进制的 3

  • 8 进制是以 0o 开头的: 例如: 0o11 则表示十进制的 9

  • 16 进制是以 0x 开头的: 例如: 0x11 则表示十进制的 17

但是在测试的时候又遇到了个问题,那就是输出来的被自动转化成了十进制:

 >>> a=0b111100
 >>> a
 60

分别使用 bin,oct,hex 可输出数字的二进制,八进制,十六进制形式,例如:

>>> a=0b111100
>>> a=60
>>> bin(a)
'0b111100'
>>> oct(a)
'0o74'
>>> hex(a)
'0x3c'

注意:

  • 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
  • 字符串可以用+运算符连接在一起,用*运算符重复。
  • python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
  • python中的字符串不能改变。

3. is 与 == 区别:

is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

is not与!=区别于上述一致,一个比较的是引用对象,另一个比较的是两者的值。

构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:

tup1 = ()    # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号

在 python 中,类型属于对象,变量是没有类型的:

a=[1,2,3]

a="runoob"

以上代码中,[1,2,3] 是 list 类型,"runoob" 是 string 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是指向 list 类型对象,也可以是指向 string 类型对象。

可更改(mutable)与不可更改(immutable)对象

在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

  • 不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。

  • 可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。

python 函数的参数传递:

  • 不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。

  • 可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响

python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

python 传不可变对象实例

#!/usr/bin/python3
#python学习交流qq群:579817333 
 
def changeint( a ):
    a = 10

b = 2
changeint(b)
print( b ) # 结果是 2

实例中有 int 对象 2,指向它的变量是 b,在传递给 changeint 函数时,按传值的方式复制了变量 b,a 和 b 都指向了同一个 int 对象,在 a=10 时,则新生成一个 int 值对象 10,并让 a 指向它。

注意:

  • list写在方括号之间,元素用逗号隔开。
  • 和字符串一样,list可以被索引和切片。
  • list可以使用+操作符进行拼接。
  • list中的元素是可以改变的。

4.python 没有自增运算符a++,自增操作是如何实现的呢?

回答中有人介绍了关于自增操作,python 不使用 ++ 的哲学逻辑:编译解析上的简洁与语言本身的简洁,就不具体翻译了。

后面还有老外回答并附带了一个例子非常的精彩,指出了 python 与 c 语言概念上的一些差异,语言描述的可能未必准确,直接上例子:

>>> b = 5  
>>> a = 5  
>>> id(a)  
 
>>> id(b)  
 
>>> a is b  
true

python 中,变量是以内容为基准而不是像 c 中以变量名为基准,所以只要你的数字内容是5,不管你起什么名字,这个变量的 id 是相同的,同时也就说明了 python 中一个变量可以以多个名称访问。

这样的设计逻辑决定了 python 中数字类型的值是不可变的,因为如果如上例,a 和 b 都是 5,当你改变了 a 时,b 也会跟着变,这当然不是我们希望的。

因此,正确的自增操作应该 a = a + 1 或者 a += 1,当此 a 自增后,通过 id() 观察可知,id 值变化了,即 a 已经是新值的名称。

以上所说的在脚本式编程环境中没有问题。但是在交互式环境中,编译器会有一个小整数池的概念,会把(-5,256)间的数预先创建好,而当a和b超过这个范围的时候,两个变量就会指向不同的对象了,因此地址也会不一样,比如下例:

>>> a=1000
>>> b=1000
>>> id(a);id(b)
2236612366224
2236617350384
>>>

5.在整数除法中,除法(/)总是返回一个浮点数,如果只想得到整数的结果,丢弃可能的分数部分,可以使用运算符 //

不同类型的数混合运算时会将整数转换为浮点数。

python 不支持复数转换为整数或浮点数

6.python 不支持单字符类型,单字符也在python也是作为一个字符串使用。

集合(set)是一个无序不重复元素的序列。

基本功能是进行成员关系测试和删除重复元素。

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

注意:

  • 字典是一种映射类型,它的元素是键值对。
  • 字典的关键字必须为不可变类型,且不能重复。
  • 创建空字典使用 { }。