第003讲:小插曲之变量和字符串
一 变量和字符串的概念
1 变量
- 定义:变量名相当于人的名字,在程序里面,它就是一个地址标识符;我们可以给变量赋值,即把值(或者数据)存储到变量(所代表的地址空间)中
- 区别:python跟其它大部分计算机语言稍有不同,它不是把值存储在变量中,更像是把名字(变量)贴在值上面;
- 所以有些python程序员会说:python没有变量,只有名字
- 图解:https://www.jianshu.com/p/3289be65c76d
- (1)C语言中变量的定义:
-
- 如上图所示,赋值b=a,就是新建一个盒子,然后把值赋值一份放过去,特点是:两个值之间完全独立。
- (2)python语言中变量的定义:
- python的变量就是贴标签!
(python里面不是什么都是对象么,我们的变量名就是一个标签而已,类属性啥的都在变量自己内部保存着呢!)
- 上面的a=2之后,1就没有归属了,就无法调用了,python的基于引用的内存管理器很快就会把这个对象的内存给清理掉的
- 扩展:http://c.biancheng.net/view/2171.html
- (1)python是弱类型的语言
- 在强类型的编程语言中,定义变量时要指明变量的类型,而且赋值的数据也必须是相同类型的,C语言、C++、Java 是强类型语言的代表
- 和强类型语言相对应的是弱类型语言,Python、JavaScript、PHP 等脚本语言一般都是弱类型的。
- (2)弱类型语言的特点
- 变量无须声明就可以直接赋值,对一个不存在的变量赋值就相当于定义了一个新变量。
- 变量的数据类型可以随时改变,比如,同一个变量可以一会儿被赋值为整数,一会儿被赋值为字符串。
- 注意:弱类型并不等于没有类型!弱类型是说在书写代码时不用刻意关注类型,但是在编程语言的内部仍然是有类型的。我们可以使用 type() 内置函数来检测某个变量或者表达式的类型
2 变量的命名规则:https://blog.csdn.net/weixin_42711549/article/details/82147012
- 命名的规范性:
- 变量名可以包括字母、数字、下划线,但是数字不能做为开头。例如:name1是合法变量名,而1name就不可以。
- 系统关键字不能做变量名使用
- 除了下划线之外,其它符号不能做为变量名使用
- Python的变量名是区分大小写的
- 驼峰命名法:
- 大驼峰:每一个单词的首字母都大写 FirstName LastName
- 小驼峰:第一个单词以小写字母开始,后续单词的首字母大写 firstName lastName
- 拓展:https://www.jianshu.com/p/9270aa5468c0
- 标识符:
- 标识符就是在程序中定义的
变量名
和函数名
。 - 标识符可以由
字母
、下划线
和数字
组成。 - 标识符不能以
数字
开头。 - 标识符不能与
关键字
重名。 - 标识符
区分大小写
。
- 标识符就是在程序中定义的
- 关键字:
- 关键字就是在
Python
内部已经使用的标识符 - 查看
Python
关键字:
- 关键字就是在
- 注意:python3可以用汉字命名
3 字符串
- 创建:用一对单引号或者双引号就可以创建一个字符串
- 转义字符:https://www.runoob.com/python/python-strings.html
- 原始字符串:在平时的字符串前面加一个r即可,转义字符反斜杠过多的时候,用原始字符串即可输出特殊字符
- 例如:
- 注意:原始字符串在最后不能加反斜杠,例如: str = r"C:\now\",非要加的话见课后练习题
- 执行结果:>>> str = r"C:\now\"
- File "<stdin>", line 1
- str = r"C:\now\"
- ^
- SyntaxError: EOL while scanning string literal
- 长字符串:可以使用三重引号定义字符串,即三个成对的双引号或者三个成对的单引号
二 课后题答案
(一)测试题部分
0. 以下哪个变量的命名不正确?为什么? (A) MM_520 (B) _MM520_ (C) 520_MM (D) _520_MM
(C)选项不正确,因为 Python 中的变量名不能以数字开头。
1. 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?
>>>myteacher = '小甲鱼' >>>yourteacher = myteacher >>>yourteacher = '黑夜' >>>print(myteacher)
会打印:小甲鱼
2. 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?
>>> myteacher = '小甲鱼' >>> yourteacher = myteacher >>> myteacher = '黑夜' >>> print(yourteacher)
会打印:小甲鱼
3. 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?
>>>first = 520 >>>second = '520' >>>first = second >>>print(first)
会打印:520,注:这里没有单引号括起来,但是他是一个字符串,因为使用 print() 打印,所以不包含单引号。可以试试直接>>>first,它是一个字符串的。
4. 除了使用饭斜杠(\)进行字符转义,还有什么方法可以打印:Let's go! 这个字符串?
>>>"Let's go!"
5. 如果非要在原始字符串结尾输入反斜杠,可以如何灵活处理?
>>>str = r'C:\Program Files\FishC\Good''\\'
6. 在这一讲中,我们说变量的命名需要注意一些地方,但小甲鱼在举例的时候貌似却干了点儿“失误”的事儿,你能看得出小甲鱼例子中哪里有问题吗?
在例子中小甲鱼起了个 str 名字的变量,但事实上我们发现,str 的颜色跟普通变量貌似不同?没错,str() 和 print() 都是内置函数,但 Python 貌似不介意我们对内置函数进行赋值操作,所以这点我们以后就要注意啦,否则可能会出现以下的 BUG:
- >>> print = 1
- >>> print("I love FishC")
- Traceback (most recent call last):
- File "<pyshell#37>", line 1, in <module>
- print("I love FishC")
- TypeError: 'int' object is not callable
(二)动动手答案:
- DaysPerYear = 365
- HoursPerDay = 24
- MinutesPerHour = 60
- SecondsPerMinute = 60
- result = DaysPerYear * HoursPerDay * MinutesPerHour * SecondsPerMinute
- print(result)