经过我们之前几天的学习,我们应该已经掌握了 Python 中相关的基础内容操作。
那么我们今天就正式的开始学习 Python 当中编程相关的知识了。
今天的内容会稍多,约2800+字,阅读完成需 15 分钟。
所谓变量其实大家可以理解为就是用一个“水杯”倒入不同的饮料,那不管我们倒入哪种饮料,我们的水杯是一直没有发生过改变的。
在计算机中其实也是类似,变量就是用来保存不同内容的一个“杯子”。
Python 中类型虽然有很多种,但是我们声明变量却很简单。
直接将需要赋值的内容直接放在一个名字后面即可(等号用作连接)。
# num 就是我们变量的名字,
# 我们可以读作将数字常量 10 赋值给变量 num
num = 10
我们刚刚是用来了我们的变量,但是变量的名字就只能是 num 么?
肯定不是,只要我们符合我们命名的规则,就可以随意的去声明内容。
那 Python 当中命名规则都有哪些呢?
Python 中变量的命名可以包含以下内容:
有同学可能说了,美元符($)我在使用的时候也并没有报错呀,为什么这里说不能包含呢?
其实这个问题主要出现在不同的操作系统中,在 Windows 或者 Mac 当中,使用 $ 并不会出现什么异常。
但是如果在 Linux 系统中,使用 $ 则会提示异常。
所以我们在使用的时候,应当避免使用 $ ,和 C++ 中是一样的。
为了提升我们代码的可读性,我们应该做到变量的命名即可以体现变量的含义。
如果我们在命名的过程当中,出现需要使用多个单词去一起组成时,我们需要使用驼峰命名。
匈牙利命名法(Hungarian Notation)是一种几乎被遗弃的一种命名方式,其含义是把变量的类型缩写,放到变量名的最前面。
# int -> n
# long -> l
# char -> ch
n_studentNumber = 12
# students、teachers ,他们指向的内容都是Person对象的list
pl_students #p代表的是person、l代表的是list
这种方法在 IDE 没有流行之前是比较有用的,但是在开发工具日益强大之后,这种方法已经慢慢被遗弃了。
但是这种方法中可以为我们所用的方式是:利用下划线来配合变量的命名。
tomorrow_weather
student_name
MR_LP
python一些具有特殊功能的标示符,这就是所谓的关键字。
这些关键字在 python 中已经被使用,所以不允许开发者自己定义和关键字相同的名字的标示符。
>>> print("我是 MR_LP,欢迎关注公众号 MR_LIXP")
>>> import keyword
>>> keyword.kwlist
输入 keyword 的列表之后,可以得到已经被使用的以下关键字。
and as assert break class continue def del
elif else except exec finally for from global
if in import is lambda not or pass
print raise return try while with yield
在 Python 中,大小命名和小写命名完全是两个变量。
例如:i_want_play_the_playstartion4
可以看出来这个变量名相当于一个函数名一样,在代码里调用的时候,也会产生很大的误解。
一个好的变量名长度控制在两到三个单词左右。
我们上次课的时候说过输出可以使用 print 将我们需要展示出来的内容显示出来。
但是当我们需要将我们的内容进行读入,这时候应该怎么办呢?
我们可以使用input( )
函数。
password = raw_input("请输入密码:")
print '您刚刚输入的密码是:', password
运行效果如下:
需要注意:
我们刚刚说过,input()会把用户输入的任何值都作为字符串来对待。
那我们输入不同的内容,input( )
会发生什么样的变化呢?
这两个方法其实是历史更迭的产物。
需要注意,两者在使用上并无明显变化,可以理解为是同一“物种”。
细心的读者可能发现了,我刚刚在上面的时候使用了这么一个东西。
>>> a = input()
123
>>> a
123
>>> type(a)
<type 'int'>
其中 type( )
,是我们经常用来判断一个变量的具体类型的方法。
同时需要注意,在 Python 中只要定义了一个变量,而且它有数据,那么它的类型就已经确定了,不需要咱们开发者主动的去说明它的类型,系统会自动辨别。
我们一般常见的变量类型请见下图。
如果运算过程中,需要使用不同类型的内容去进行操作,我们还会涉及到我们变量之间的转化。
例如:
a = '100' # 此时a的类型是一个字符串,里面存放了100这3个字符
b = int(a) # 此时b的类型是整型,里面存放的是数字100
print("a=%d"%b)
以下为我们在进行变量之间转化时常用的方法。
函数 | 说明 |
---|---|
int(x [,base ]) | 将x转换为一个整数 |
long(x [,base ]) | 将x转换为一个长整数 |
float(x ) | 将x转换到一个浮点数 |
complex(real [,imag ]) | 创建一个复数 |
str(x ) | 将对象 x 转换为字符串 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s ) | 将序列 s 转换为一个元组 |
list(s ) | 将序列 s 转换为一个列表 |
chr(x ) | 将一个整数转换为一个字符 |
unichr(x ) | 将一个整数转换为Unicode字符 |
ord(x ) | 将一个字符转换为它的整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
首先列举一下 Python 中常见的算数运算符都有哪些?
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 两个对象相加 a + b 输出结果 30 |
- | 减 | 得到负数或是一个数减去另一个数 a - b 输出结果 -10 |
* | 乘 | 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200 |
/ | 除 | x除以y b / a 输出结果 2 |
// | 取整除 | 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
% | 取余 | 返回除法的余数 b % a 输出结果 0 |
** | 幂 | 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000 |
举个例子:
>>> 9/2.0
4.5
>>> 9//2.0
4.0
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符 | 把=号右边的结果给左边的变量 num=1+2*3 结果num的值为7 |
同样举个例子:
>>> a, b = 1, 2
>>> a
1
>>> b
2
其实复合运算符其实就是我们基础运算符的升级版,但是这个升级仅仅是书写方式上的升级,运算效率上并没有任何的提升。
i = i + 1 # i在自身的基础上增加1,并重新赋值给 i ,实现了经过这句代码后 i 变成了2的效果
i += 1 # i在自身的基础上增加1,并重新赋值给 i,同样实现了经过这句代码后 i 变成了2的效果
我们常见的复合运算符如下:
运算符 | 描述 | 实例 |
---|---|---|
+= | 加法赋值运算符 | 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 |
相信读者如果之前学习过其他语言,那么很容易在书写代码中直接使用“累加器”。
>>> i = 10
>>> i++
File "" , line 1
i++
^
SyntaxError: invalid syntax
但是我们会发现,当我们去使用 i++
,之后,我们的程序直接报错了。
具体原因请看下面的测试代码1 及 测试代码2。
# 测试代码 1
>>> a = 5
>>> b = 5
>>> id(a)
140618689958600
>>> id(b)
140618689958600
和
# 测试代码 2
>>> a = 1
>>> b = 2
>>> id(a)
140618689958696
>>> id(b)
140618689958672
>>> a+=1
>>> id(a)
140618689958672
>>> id(b)
140618689958672
细心的读者们肯定已经发现了,我们声明变量 a 和变量 b,它的内容空间居然是相同的?
python中的变量不像c那样事先定义好变量类型,在内存中开辟指定的空间,然后再开始赋值。
在Python中,以字符串为例:事先在内存划分空间来存放字符串,然后用变量名去指向这个字符串,类似于指针。
当 变量 a , b 指向的是同一个内存空间时,又怎么能使用 “自增/自减” 运算呢?。
各位读者需要注意,Python 中是不支持 i++ 这种写法的。