基础语法⑴
变量是什么
avg = (67.5 + 89.0 + 68.6 + 98.5) / 4
sum = (67.5 - avg) **2 + (98.0 - avg ) **2 +
(68.6 - avg) **2 + (98.5 - avg) **2
ret = sum / 3
print(sum)
通过上面的例子, 我们可以清楚地看到: 平均值(avg) 被使用多次, 如果我么不用一个东西去暂时存储avg, 就会在使用它的地方, 频繁地计算(67.5 + 89.0 + 68.6 + 98.5) / 4 ==>
需要把一些计算的中间值保存起来, 这个时候就会用到变量
注意:
- avg, sum, ret 均为变量
- (**)在python中表示乘方运算, **2 就是求平方
变量可以视为是一块能够容纳数据的空间, 这个空间往往对应到"内存" 这样的硬件设备
变量的语法
(1)定义变量
a = 10
创建变量的语句非常简单, 其中
- a 为变量名. 当我们创建很多个变量的时候, 就可以用名字来进行区分.
- = 为赋值运算符, 表示把 = 右侧的数据放到 = 左侧的空间中.
注意: 变量的名字要遵守一定规则.
硬性规则(务必遵守)
- 变量名由数字字母下划线构成.
- 数字不能开头.
- 变量名不能和 “关键字” 重复.
- 变量名大小写敏感. num 和 Num 是两个不同的变量名.
软性规则(建议遵守) - 变量名使用有描述性的单词来表示, 尽量表达出变量的作用.
- 一个变量名可以由多个单词构成, 长一点没关系, 但是含义要清晰.
- 当变量名包含多个单词的时候, 建议使用 “驼峰命名法”. 形如 totalCount , personInfo 这种, 除了首个单词外, 剩余单词首字母大写.
(2)使用变量
- 定义变量
a = 10
print(a)
- 修改变量
a = 20
print(a)
注意: 在 Python 中, 修改变量也是使用 = 运算, 看起来和定义变量没有明显区别.
原因: 因为在python中定义变量可以不写出变量类型, 是根据后面初始化的内容确定变量的类型
- 两个变量之间的赋值
a = 10
b = 20
# 将 b的值赋给a, 此时 a的值发生了变化, b的值并没有发生变化
a = b
print(a, b)
*****
20 20
*****
变量的类型
(1) 整数
a = 10
print(type(a))
*****
<class 'int'>
*****
注意: 和 C++ / Java 等语言不同, Python 的 int 类型变量, 表示的数据范围是没有上限的. 只要内存足够大, 理论上就可以表示无限大小的数据. (不够会自动扩容)
=> 所以, 在python中, 是没有 shor, long, long long, byte 这些类型, 整形类型就一个 int类型够用了~~
(2) 浮点数
a = 10.5
print(type(a))
*****
<class 'float'>
*****
- 注意: 和 C++ / Java 等语言不同, Python 的小数只有 float 一种类型, 没有 double 类型. 但是实际上Python 的 float 就相当于 C++ / Java 的 double, 表示双精度浮点数.
- 相比于单精度浮点数, 双精度浮点数占用的内存空间更多, 同时表示的数据精度更高即可(大概精确到小数点后15 位).
(3) 字符串
- 定义一个字符串变量
a = 'hello python'
print(type(a))
*****
<class 'str'>
*****
- 使用 ’ ’ 或者 " " 引起来的, 称为 字符串. 可以用来表示文本.
- 注意: 在 Python 中, 单引号构成的字符串和双引号构成的字符串, 没有区别. ‘hello’ 和 “hello” 是完全等价的. (这里跟C++ Java不一样哦)
- 使用 len 函数来获取字符串的长度.
a = 'hello python'
print(len(a))
*****
12
*****
- 可以使用 + 针对两个字符串进行拼接.
a = 'hello'
tem = ' '
b = 'python'
print(a + tem + b)
*****
hello python
*****
注意: 此处是两个字符串相加. 不能拿字符串和整数/浮点数相加.
a = 'hello'
b = 10
print(a + b)
*****
TypeError: can only concatenate str (not "int") to str
*****
- 输出带有" " 或者 输出带有 ’ ’ 或者 输出既有" " 又有 ’ ’
1 字符串里面只有" ", 那么字符串就用 ’ ’
print(' my name is "muyu" ')
*****
my name is "name"
*****
2 字符串里面只有’ ', 那么字符串就用" "
print("my name is 'muyu' ")
*****
my name is 'muyu'
*****
3 字符串里面既有 ’ ’ 又有 " ", 那么字符串就用三引号(三个单引号 或者 三个双引号)
print(''' "my" name is 'muyu' ''')
print(""" "my" name is 'muyu' """)
*****
"my" name is 'muyu'
"my" name is 'muyu'
*****
(4) 布尔
布尔类型是一个特殊的类型, 取值只有两种, True (真) 和 False (假).
注意: 有大写哦, 在C++ / Java中, 是true 和 false
a = True
b = False
print(type(a))
print(type(b))
*****
<class 'bool'>
<class 'bool'>
*****
(5) 其他
除了上述类型之外, Python 中还有 list(列表), tuple(元组), dict(字典), 自定义类型 等等. 我们后续再介绍.
为什么要有这么多类型?
(1) 类型决定了数据在内存中占据了多大空间
(2) 类型约定了能对这个变量做什么样的操作
例如: int/ float 类型的变量, 可以进行 + - * / 等操作
而str类型的变量, 只能进行 + (并且是字符串拼接), 不能进行 - * /, 但是还能使用 len等其他操作
动态类型特性
在 Python 中, 一个变量是什么类型, 是可以在 “程序运行” 过程中发生变化的. 这个特性称为 “动态类型” .
a = 10
print(type(a))
a = 'hello'
print(type(a))
*****
<class 'int'>
<class 'str'>
*****
在程序执行过程中, a 的类型刚开始是 int, 后面变成了 str.
动态类型特性是一把双刃剑:
- 对于中小型程序, 可以大大的解约代码量(比如写一段代码就可以同时支持多种类型).
- 对于大型程序, 则提高了模块之间的交互成本. (程序猿 A 提供的代码难以被 B 理解).
注释
注释是什么
注释是一种特殊的代码, 它不会影响到程序的执行, 但是能够起到解释说明的作用, 能够帮助程序猿理解程序代码的执行逻辑.
注释的语法
(1) 注释行
使用 # 开头的行都是注释
# 这是一行注释
(2) 文档字符串
使用三引号引起来的称为 “文档字符串”, 也可以视为一种注释
- 可以包含多行内容
- 一般放在 文件/函数/类 的开头
- 三个单引号 或者 三个双引号用来注释都行
'''
文档字符串
文档字符串
'''
""""
文档字符串
文档字符串
"""
注释的规范
- 内容准确: 注释内容要和代码匹配, 并能够在代码修改时能够及时更新
- 篇幅合理: 注释应该适中, 表达出主要思想就可; 不要太简单, 也不要长篇大论
- 积极向上: 注释不要包含负能量