04 - Python 变量类型 & 运算符

一、前言

经过我们之前几天的学习,我们应该已经掌握了 Python 中相关的基础内容操作。

那么我们今天就正式的开始学习 Python 当中编程相关的知识了。

今天的内容会稍多,约2800+字,阅读完成需 15 分钟。

image

二、变量

2.1 什么是变量?

所谓变量其实大家可以理解为就是用一个“水杯”倒入不同的饮料,那不管我们倒入哪种饮料,我们的水杯是一直没有发生过改变的。

在计算机中其实也是类似,变量就是用来保存不同内容的一个“杯子”。

2.2 声明变量

Python 中类型虽然有很多种,但是我们声明变量却很简单。

直接将需要赋值的内容直接放在一个名字后面即可(等号用作连接)。

# num 就是我们变量的名字,
# 我们可以读作将数字常量 10 赋值给变量 num
num = 10
复制代码

2.3 变量名

我们刚刚是用来了我们的变量,但是变量的名字就只能是 num 么?

肯定不是,只要我们符合我们命名的规则,就可以随意的去声明内容。

那 Python 当中命名规则都有哪些呢?

2.3.1 可包含内容

Python 中变量的命名可以包含以下内容:

  1. 数字
  2. 字母
  3. 下划线

有同学可能说了,美元符($)我在使用的时候也并没有报错呀,为什么这里说不能包含呢?

其实这个问题主要出现在不同的操作系统中,在 Windows 或者 Mac 当中,使用 $ 并不会出现什么异常。

但是如果在 Linux 系统中,使用 $ 则会提示异常。

所以我们在使用的时候,应当避免使用 $ ,和 C++ 中是一样的。

2.3.2 见名之意

为了提升我们代码的可读性,我们应该做到变量的命名即可以体现变量的含义。

  • 提升可读性
    • time:时间
    • start_time:开始时间
  • 对或者错(布尔类型)
    • 是否删除: is_delete
    • 是否禁用 : is_enabled

2.3.3 驼峰命名

如果我们在命名的过程当中,出现需要使用多个单词去一起组成时,我们需要使用驼峰命名

image

  • 小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写
    • 例如:myName、aDog
  • 大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母
    • 例如:FirstName、LastName

2.3.4 匈牙利命名法

匈牙利命名法(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
复制代码

2.3.5 避免和关键字重复

python一些具有特殊功能的标示符,这就是所谓的关键字。

这些关键字在 python 中已经被使用,所以不允许开发者自己定义和关键字相同的名字的标示符。

image

>>>  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
复制代码

2.3.6 变量的命名区分大小写

在 Python 中,大小命名和小写命名完全是两个变量。

2.3.7 变量的命名不宜过长

例如:i_want_play_the_playstartion4 可以看出来这个变量名相当于一个函数名一样,在代码里调用的时候,也会产生很大的误解。 一个好的变量名长度控制在两到三个单词左右。

三、输入

3.1 input( ) 的用法

我们上次课的时候说过输出可以使用 print 将我们需要展示出来的内容显示出来。

但是当我们需要将我们的内容进行读入,这时候应该怎么办呢?

我们可以使用input( )函数。

    password = raw_input("请输入密码:")
    print '您刚刚输入的密码是:', password
复制代码

运行效果如下:

image

需要注意:

  • input()的小括号中放入的是,提示信息,用来在获取数据之前给用户的一个简单提示
  • input()在从键盘获取了数据以后,会存放到等号右边的变量中
  • input()会把用户输入的任何值都作为字符串来对待

3.2 input( ) 输入不同的值

我们刚刚说过,input()会把用户输入的任何值都作为字符串来对待。

那我们输入不同的内容,input( )会发生什么样的变化呢?

image

3.3 input( ) 和 raw_input( )

这两个方法其实是历史更迭的产物。

  • python 2 : raw_input( )
  • python 3 : input( )

需要注意,两者在使用上并无明显变化,可以理解为是同一“物种”。

四、变量的类型 & 变量的转化

4.1 使用方法确定变量的类型

细心的读者可能发现了,我刚刚在上面的时候使用了这么一个东西。

>>> a = input()
123
>>> a
123
>>> type(a)
<type 'int'>
复制代码

其中 type( ),是我们经常用来判断一个变量的具体类型的方法。

同时需要注意,在 Python 中只要定义了一个变量,而且它有数据,那么它的类型就已经确定了,不需要咱们开发者主动的去说明它的类型,系统会自动辨别

4.2 Python 中变量的类型

我们一般常见的变量类型请见下图。

image

4.3 变量之间的转化

如果运算过程中,需要使用不同类型的内容去进行操作,我们还会涉及到我们变量之间的转化。

例如:

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 中的运算符

首先列举一下 Python 中常见的算数运算符都有哪些?

5.1 算数运算符

运算符 描述 实例
+ 两个对象相加 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
复制代码

5.2 赋值运算符

运算符 描述 实例
= 赋值运算符 把=号右边的结果给左边的变量 num=1+2*3 结果num的值为7

同样举个例子:

>>> a, b = 1, 2
>>> a
1
>>> b
2
复制代码

5.3 复合运算符

其实复合运算符其实就是我们基础运算符的升级版,但是这个升级仅仅是书写方式上的升级,运算效率上并没有任何的提升。

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

5.4 Python 中 i++ 报错

相信读者如果之前学习过其他语言,那么很容易在书写代码中直接使用“累加器”。

>>> i = 10
>>> i++
  File "<stdin>", 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++ 这种写法的。

猜你喜欢

转载自juejin.im/post/5b655efbf265da0f716c4146