广州番禺Python, Java小班周末班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6
8.2.1 理解数据运算
不论是算数运算还是关系运算,或是其它类型的运算,都是按照特定的逻辑规则对数据进行表示和处理的过程。例如在等式1+1=2中,将两物相加的结果用字符2进行表示。
1+1之所以等于2,是因为我们先有了物物相加的生活经验,然后以数字符号的形式来表示这种算数逻辑的处理过程。
8.2.2 操作符与操作数
8.2.3 Python中的数据运算
is_happy = True
代码讲解:
定义布尔类型变量时,通常以is作为前缀,表示是否的意思。例如变量is_happy,表示是否快乐的意思。are you happy?
# 定义year变量,指向的值为1986 year = 1986 # 1. 计算千位数 number = year // 1000 # 计算百位数 year = year % 1000 number = year // 100 # 计算十位数 year = year % 100 number = year // 10 # 计算个位数 year = year % 10 number = year // 1
代码讲解:
(1) 将数字与各数位的基数作整除运算,可以获取当前数位的数字,例如千位数的基数为1000,百位数的基数为100, 十位数的基数为10,以此类推。将2020与1000进行整除,结果为2,显然2就是千位数的数字。
(2) 将数字与数位的基数进行求余运算,可获得下一数位的数。例如2121与1000进行求余运算,余数为121。如果余数小于数位的基数,那么说明该数位的数字为0。例如2020与1000进行求余运算,余数为20,20小于100,那么百位上的数字为0。算数运算与赋值运算可以进行组合。
number = 2 number **= 2
代码讲解:
(1) 定义了一个number变量,指向的值为2
(2) number **= 2等价于number = number ** 2,先将number指向的值与2进行幂运算,再将计算的结果的内存地址赋值给变量number。2与2的幂,结果为4。
(3) 其它的算数运算同样可以与赋值运算组成复合运算,以此类推。
# 定义year变量,指向的值为2020 year = 2020 # 1. 计算千位数 number = year // 1000 # 计算百位数 year = year % 1000 if year >= 100: number = year // 100 else: number = 0 # 计算十位数 year = year % 100 if year >= 10: number = year // 10 else: number = 0 # 计算个位数 year = year % 10 if year >= 1: number = year // 1 else: number = 0
(1) 与算数运算中的代码实例相比,这里多了条件判断,判断余数是否大于等于数位的基数 (2) 如果余数大于等于基数,那么就与基数进行整除运算,获取数位上的数字。如果余数小于基数,那么说明当前数位的数字为0
# 定义love变量 love = "" and 201314 and False # love的值为""
代码讲解:
(1) 在逻辑与运算中,只要其中一个操作数的值为假,就触发短路,返回最后一次参与运算的操作数 (2) 在表达式"" and 201314 and False中,第一个操作数为""。""是空字符串,值为假,所以会触发短路,返回的值为""。
# 定义love变量 love = "" or False or 201314 or 748 # love的值为201314
代码讲解:
(1) 在逻辑或运算中,只要操作数的值为真,就触发短路,返回值为真的操作数。
(2) 在表达式"" or False or 201314 or 748中,第一个操作数为""。""是空字符串,值为假,所以会继续进行判断。False的值为假,继续进行判断。201314的值为真,立即停止运算,返回201314。 整型和浮点类型的0值,空字符串,布尔类型的False,None类型,这些都为假值。
所谓的标识值,在CPython中指的是内存地址(我们使用的Python,通常说的是CPython,CPython是Python语言的一种解释器),即判断操作数是否具备相同的内存地址,通过内置函数id来可以获取操作数的内存地址。在Python中对小整数以及英文的短字符串,在内存中进行了缓存,所以它们具有相同的标识值。Python默认把-5到256之间的小整数进行缓存。对英文短字符串也进行了缓存,限定的长度为20,且字符之间不能出现空格,否则也不会在内存中进行缓存。
the_man = "我" me = "我" # 使用is not 判断标识值是否相等 if the_man is not me: print("the man is not me") else: print("the man is me!")
在交互模式的输出为:
the man is not me
the man is me
在PyCharm等IDE中运行程序时,Python解释器会将文件中的所有代码一次性编译成中间字节码,这样就有了优化的契机,在一次性编译的过程中,Python解释器将全局常量存储在一块固定的内存中,供其它对象引用,所以在PyCharm中运行时,id值就相等。而在交互模式中每按一下回车键,就会触发一次编译。
代码实例-我当然是我:
the_man = "我" me = "我" # 使用关系运算判断值是否相等 if the_man == me: print("the man is me") else: print("the man is not me!")
程序输出为:
the man is me
(1) 关系运算比较的值是否相等,字符"我"与"我",它们的值相等,所以执行的是if语句冒号下面的代码
8.2.4 结合性与优先级
x=y=z=2 # 变量x,y,z指向的值都为2
代码讲解:
(1) 赋值运算的结合性为从右至左,所以首先计算的是z=2,定义了变量z,指向的值为2。 (2) 然后将变量z指向的值再赋值给变量y,y指向的值也为2,同理变量x指向的值也为2。
result = 1+2*3-4
代码讲解:
(1) 乘法的优先级最高,优先计算2*3,结果为6,然后再计算1+6-4的值 (2) 加减法的优先级相同,所以先计算1+6与先计算6-4的结果都是相同的,最终的值为3
算数运算 > 关系运算 > 标识运算 > 成员运算 > 逻辑运算 > 赋值运算
the_woman = "Lohan" lohan = "Lohan" true_love = False love = "" or False or 748 if (the_woman is lohan) and (true_love is True) or (love != 748): print("the true love") else: print("all are lies")
代码讲解:
(1) 先计算()里面的表达式的值。
(2) 所以if语句中的表达式等价于 True and False or False
(3) and 与 or的优先级相同。按左结合性进行计算,先计算True and False,值为False。最后计算表达式False or False,值为False。
8.2.5 知识要点
(1) 操作符就是表示各类数据运算的符号,操作数就是参与数据运算的数
(2) Python中的数据运算主要有赋值运算,算数运算,关系运算,逻辑运算,成员运算,标识运算
(3) 在Python中通过赋值运算来定义变量,赋值运算符左边的操作数必须是变量
(4) Python中的变量是一个存储内存地址的容器
(5) 算数运算与赋值运算可组合成复合运算,标识运算与逻辑非运算可组合成复合运算
(6) 逻辑与运算中只要其中一个操作数为假,就停止运算,输出最后一次参与运算的操作数。逻辑或运算中只要其中一个操作数为真,就停止计算,输出最后一次参与运算的操作数
(7) 在Python中赋值运算为右结合性,其它运算都为左结合性
(8) 进行数据运算时,使用()括住的优先级是最高的
8.2.6 高薪就业班
薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。
(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取Python学习资料:
已有4位薯条发表了看法:
访客 评论于 2020-06-02 16:14:09 回复
代码“我不是我”这个例子中,在Mac上用最新版的pycharm编译给出的id(the_man)和id(me)运行后结果是相同的,但在python交互模式下二者又并不相同,这是为何?
薯条老师 评论于 2020-06-02 17:23:51 回复
在PyCharm中运行程序时,Python解释器会将文件中的所有代码一次性编译成中间字节码,这样就有了优化的契机,在一次性编译的过程中可以将字符串常量等其它常量都存储在同一块内存中,供其它对象引用,所以id值就相等。而在交互模式中每按一下回车键,就会触发一次编译,这样id值就不同了。
徐gg 评论于 2020-07-23 17:29:45 回复
请问,在代码"all are lies"中,Lohan不区分大小写吗,为什么“the_woman is lohan”是 true ?
薯条老师 评论于 2020-07-30 14:26:40 回复
那个lohan是一个变量,指向的是一个字符串"Lohan"