python变量赋值与运算符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python变量赋值与运算符相关的知识,希望对你有一定的参考价值。

python变量赋值与运算符

目录:

  1、变量赋值 [=]

  2、输入输出[input raw_input,print]

  3、常量

  4、常用数据类型 [整数,浮点数,布尔值,空值]

  5、字符串格式化 [%s,%d,%f,%x]

  8、编码 [ASCII,unicode,UTF-8]

  9、注释 [#,’’’]

  10、python算术运算符 [+,-,*,/,//,%,**]

  11、python比较运算符 [==,!=,<>,>,<,>=,<=]

  12、python赋值运算符 [=,+=,-+,*=,/=,%=,**=,//=]

  13、python位运算符 [&,|,^,>>,<<]

  14、python逻辑运算符 [or,and,not]

  15、python成员运算符 [in,not in]

  16、python身份运算符 [is,is not]

  17、python运算符优先级

一、变量赋值4.24

1、变量:代表或引用某值的名字。使用=号赋值

2、命名规则:

  1)、可以包括字母、数字、和下划线

  2)、不能以数字开头

  3)、不能以关键字作为变量

注:使用keyword模块查看当前支持的关键字

技术分享

3、解释一下变量赋值在内存中表示的原理:

  例:a=‘ABC’

python解释器的操作流程:

  在内存中创建了一个‘ABC’的字符串,创建了一个名为a的变量,并把它指向‘ABC’。

  继续赋值:如  b=a

  此时,在内存中创建了一个名为b的变量,并指向a所指向的数据,即b=’ABC’

  接着来分析一个问题:

  a=‘ABC’

  b=a

  a=’def’

  print(b)

输出b的结果会是什么呢?

 分析:

  执行a=‘ABC’,解释器创建了字符串‘ABC’和变量a,并把a指向’ABC’;

  执行b = a,解释器创建了变量b,并把b指向a指向的字符串‘ABC‘:

  执行a = ‘def‘,解释器创建了字符串‘def‘,并把a的指向改为‘def‘,但b并没有更改,依然指向的是‘def’

所以,最后打印b的结果自然是‘ABC’了。

4、输入输出:

  1)、输出(print)

>>>print(‘hello,world’)

hello,world

  如果输出多个字符串,可以使用“,”号隔开,print()会依次打印每个字符串,遇到逗号“,”会输出一个空格。(只在3.0版本中生效)

例:

 >>>print(‘hello’,’world’)

 hello  world

注释:使用print时,在3.0版本中,必须使用括号(),将输出的内容扩起来,在2.7版本中不存在此问题,直接‘’输出内容即可。也可以使用()。

print()打印整数,或者计算结果:

  >>>print(300)

300

  >>>print(100+200)

300

例:输出内容显示为: 100+200 = 300

>>>print(‘100+200 =’,100+200)

300

这是3.0版本的输出结果,我们看一下2.7版本会输出什么结果:

技术分享

示例:

技术分享

2.7版本,print打印遇到逗号,时,不会输出空格,而是输出内容,要想显示的精简点,使用下列方式

技术分享

说明:

  ‘’单引号包含的内容,python解释器会把它视为字符串,所以会输出包含的内容。对于100+200,python解释器会自动计算出结果。

  %d:表示整数格式,替换最后%定义的数值。(有关字符格式,会在后面的文章中重点解释)。

  2)、输入(input)

>>> name = input()

Michael

当你输入name =input()并按下回车后,Python交互式命令行就在等待你的输入了。这时,你可以输入任意字符,然后按回车后完成输入。

 

输入完成后,不会有任何提示,Python交互式命令行又回到>>>状态了。那我们刚才输入的内容到哪去了?答案是存放到name变量里了。可以直接输入name查看变量内容:

 

>>> name

‘Michael‘

在计算机程序中,变量不仅可以为整数或浮点数,还可以是字符串,因此,name作为一个变量就是一个字符串。

 

要打印出name变量的内容,除了直接写name然后按回车外,还可以用print()函数:

 

>>> print(name)

Michael

5、常量

  常量就是不能变的变量,在习惯上通常使用大写的变量名表示常量。

例:PI=3.14159265359

  其实PI仍然是一个变量,常量只是表示一般不会变化的值,而如果我们要改变PI的值,也是可以的。

 

比较一下2.7和3.0在整数的除法中得到结果的异同点:

2.7版本:

技术分享

3.0版本:

技术分享

3.0版本中,/除法结果是浮点数,即使两个整数可以整除,结果也是浮点数,而2.7版本中,只是取整数的值。

3.0版本中,如果取整数,可以使用//

技术分享

如果取余数,可以使用%运算

技术分享

6、常用数据类型

  1)、整数

Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。

  2)、浮点数

  浮点数也就是小数。

  整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的,而浮点数运算则可能会有四舍五入的误差。

  3)、布尔值

  布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来:

>>> True

True

>>> False

False

>>> 3 > 2

True

>>> 3 > 5

False

  布尔值可以用and、or和not运算。

  and运算是与运算,只有所有都为True,and运算结果才是True:

 

>>> True and True

True

>>> True and False

False

>>> False and False

False

>>> 5 > 3 and 3 > 1

True

  or运算是或运算,只要其中有一个为True,or运算结果就是True:

 

>>> True or True

True

>>> True or False

True

>>> False or False

False

>>> 5 > 3 or 1 > 3

True

  not运算是非运算,它是一个单目运算符,把True变成False,False变成True:

>>> not True

False

>>> not False

True

>>> not 1 > 2

True

布尔值经常用在条件判断中,比如:

技术分享

技术分享

4)、空值

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

 

此外,Python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型,我们后面会继续讲到

7、字符串与字符串格式化

  1)、字符串

字符串是以单引号‘或双引号"括起来的任意文本

如果字符串内部既包含‘又包含"怎么办?

  1)、如果字符串内容中包含‘单引号

可以使用“”双引号,将内容包含

例:包含’单引号,

技术分享

注释:

  如果使用’‘单引号包含的内容中有单个’单引号,那么输出内容就会报错,这时可以使用双引号“”将内容包含,

  如果使用“”双引号包含的内容中有单个“双引号,那么输出的内容同样也会报错,可以使用’’’三个单引号包含具有”号的内容。

技术分享

2)使用转义符

  \表示转义符

例:

技术分享

转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\,可以在Python的交互式命令行用print()打印字符串看看:

  >>> print(‘I\‘m ok.‘)

I‘m ok.

  >>> print(‘I\‘m learning\nPython.‘)

I‘m learning

Python.

  >>> print(‘\\\n\\‘)

\

\

  如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r‘‘表示‘‘内部的字符串默认不转义,可以自己试试:

  >>> print(‘\\\t\\‘)

\       \

  >>> print(r‘\\\t\\‘)

\\\t\\

  如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用‘‘‘...‘‘‘的格式表示多行内容,可以自己试试:

  >>> print(‘‘‘line1

... line2

... line3‘‘‘)

line1

line2

line3

  上面是在交互式命令行内输入,注意在输入多行内容时,提示符由>>>变为...,提示你可以接着上一行输入。如果写成程序,就是:

print(‘‘‘line1

line2

line3‘‘‘)

  2)、字符格式化

%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。

常见的占位符有:

%d整数

%f浮点数

%s字符串

%x十六进制整数

例:

  >>>’hello,%s’%’world’

‘hello,world’

注释:%s表示用最后%定义的world替换

例:

>>> ‘Hi, %s, you have $%d.‘ % (‘Michael‘, 1000000)

‘Hi, Michael, you have $1000000.

‘Hi,Michael,you have $1000000.’


技术分享

格式化整数

  可以在指定的占位符中是否补0

例:

技术分享

注释:

  %3d:代表整数替换,具有三个占位符。不过后面定义的值中如果位数超过三个,还是会输出全部,只是表示未超出指定位数的表示。

  %3d:表示整数有3个占位符,如果某个占位符中没有值,是否补0,如1只有一个位数,所以在1前加了两个0表示。

 

格式化整数与小数的位数:

  >>> ‘%.2f‘ % 3.1415926

‘3.14‘

注意:

  %s永远起作用,它会把任何数据类型转换为字符串:

>>> ‘Age: %s. Gender: %s‘ % (25, True)

‘Age: 25. Gender: True‘

 

字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%

 

>>> ‘growth rate: %d %%‘ % 7

‘growth rate: 7 %‘

4、编码

  首先要知道一个概念:

  计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。

最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255=28(二进制11111111转换为十进制=255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是21665535表示,4个字节可以表示的最大整数是2324294967295表示。

  ASCII编码中,65-9026个大写英文字母,97-12226个小写字母

  大写A的编码是65,小写字母z的编码为122

是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去

你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。

 

因此Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

 

Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode

 

现在,捋一捋ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。

 

字母AASCII编码是十进制的65,二进制的01000001

 

字符0ASCII编码是十进制的48,二进制的00110000,注意字符‘0‘和整数0是不同的;

 

汉字中已经超出了ASCII编码的范围,用Unicode编码是十进制的20013,二进制的01001110 00101101

 

你可以猜测,如果把ASCII编码的AUnicode编码,只需要在前面补0就可以,因此,AUnicode编码是00000000 01000001

 

新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。

 

所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间:

 

UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。

 

搞清楚了ASCIIUnicodeUTF-8的关系,我们就可以总结一下现在计算机系统通用的字符编码工作方式:

 

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

 

用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:

 

注意:

  如果在编写python脚本中,需要使用中文,必须指定编码:

例:

技术分享

执行:

技术分享

如果未指定编码,则会报错:

技术分享

技术分享

9、注释

  单行注释格式:

#注释内容

  多行注释:

‘’’注释内容’’’

10Python算术运算符

  以下假设变量: a=10b=20

运算符描述实例

+ - 两个对象相加a + b 输出结果 30

- - 得到负数或是一个数减去另一个数a - b 输出结果 -10

* - 两个数相乘或是返回一个被重复若干次的字符串a * b 输出结果 200

/  b / a 输出结果 2

%取模  返回除法的余数b % a 输出结果 0

**  返回xy次幂a**b 1020次方, 输出结果 100000000000000000000

//取整除   9//2 输出结果 4 ,     9.0//2.0 输出结果 4.0

11python比较运算符

  ==:等于,一般用于比较两个对象是否相等

  =:不等于,比较两个对象是否不相等

  <>:不等于,和!=类似

  >:大于

  <:小于

  >=:大于等于

  <=:小于等于

例如一般用在if语句中:

技术分享

注释:注意if要以:结尾,else也要以:结尾,和shell的区别

12、python赋值运算符

  =简单的赋值运算符c = a + b a + b 的运算结果赋值为 c

  +=加法赋值运算符c += a 等效于 c = c + a

  -=减法赋值运算符c -= a 等效于 c = c - a

  *=乘法赋值运算符c *= a 等效于 c = c * a

  /=除法赋值运算符c /= a 等效于 c = c / a

  %=取模赋值运算符c %= a 等效于 c = c % a

  **=幂赋值运算符c **= a 等效于 c = c ** a

  //=取整除赋值运算符c //= a 等效于 c = c // a

例:

技术分享

13python位运算符:

  &按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0二进制解释:

  设置变量a=5b=3

二进制:

  例:a = 0101

      b = 0011

  a&b=0001

技术分享

按位运算符:只要对应的二个二进位有一个为1时,结果位就为1,二进制解释:

  设置变量: a=5,b=3

二进制:

  a=0101

  b=0011

a|b=0111

>>>a|b

7

^按位异或运算符:当两对应的二进位相异时,(不相同时)结果为1,二进制解释:

设置变量:a=5,b=3

 二进制:

  a=0101

  b=0011

a^b=0110

技术分享

~按位取反运算符:对数据的每个二进制位取反,即把1变为0,0变为1  二进制解释:  在一个有符号二进制数的补码形式。

设置变量:

a=5

二进制表示:

  a=0101

 ~a=1010  //取反

技术分享

<<左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,不够的位数补0。二进制解释:

设置变量:

  a=5

二进制表示:

  a=0101.

  a<<2  //向左移位,后面不够的补0

  a=01 0100

a=20

技术分享

>>右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 ,高位丢弃,二进制解释:

设置变量a=5

二进制表示:

   a=0101

2>>a=00 01   ##去掉01   //向右移位,前面不够的补0,后面的丢掉

技术分享

 14python逻辑运算符:

  and :俩个值都相等时才满足条件,返回结果

技术分享

  or:一个条件满足,就返回前面的结果

技术分享

 not:非,取反的意思

技术分享

15python成员运算符:

  in: 在指定的序列中找到值返回True

  not in :在指定的序列中没有找到值返回True

技术分享

16python身份运算符:

   is: 比较两个标识符是不是引用来自一个对象

  is not :表交两个标识符是不是引用来自不同对象

例:

技术分享

17python运算符优先级

  以下表格列出了从最高到最低优先级的所有运算符:

运算符描述

** 指数 (最高优先级)

~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 [email protected] [email protected])

* / % // 乘,除,取模和取整除

+ - 加法减法

>> << 右移,左移运算符

& ‘AND‘

^ | 位运算符

<= < > >= 比较运算符

<> == != 等于运算符

= %= /= //= -= += *= **= 赋值运算符

is is not 身份运算符

in not in 成员运算符

not or and 逻辑运算符

注释:

  一般常用的就是[+,-,*,/],符合数学运算中的优先级,初此之外,**幂的优先级最高,运算符的优先级如上表示。


本文出自 “keep常明” 博客,请务必保留此出处http://keep88.blog.51cto.com/11829099/1920270

以上是关于python变量赋值与运算符的主要内容,如果未能解决你的问题,请参考以下文章

python 变量赋值

python基础之变量与数据类型

深入解析Python中的变量和赋值运算符

深入解析Python中的变量和赋值运算符

Learing-Python:Python中的基本运算符

在Python中,当作为类方法定义中的默认值传递时,赋值运算符是否会访问类或实例变量?