python变量

Posted on 2019-11-28 22:52  阿东同学  阅读(298)  评论(0)    收藏  举报

一、变量

  变量用来保存程序中的数据。除了变量,还有常量,二者的区别是:常量一旦保存某个数据之后,该数据就不能发生改变;但变量保存的数据则可以多次发生改变,只要程序对变量重新赋值即可。
  python是一种弱类型语言,弱类型语言有以下 2 个特征:

    1.变量无须声明即可直接赋值,对一个不存在的变量赋值就相当于定义了一个新变量。

    2.变量的数据类型可以动态改变:同一个变量可以一会儿被赋值为整数值,一会儿被赋值为字符串。
a = 20               # python使用等号 ( = ) 作为赋值运算符
print(type(a))       # type()用于传出输入数据的类型
a = 'hello world'
print(type(a))

name = 'faker'
age = 24
print('名字', name, '年龄', age, sep='|')  # 默认以空格隔开变量,可通过sep设置其他分隔符

print('大漠孤烟直', '\t', end='')  # 输出后默认换行,可通过end设置
print('长河落日圆')

输出结果:
<class 'int'>
<class 'str'>
名字|faker|年龄|24
大漠孤烟直      长河落日圆 

 

二、数值类型

1、整型

  整型用来表示整数,python中整型包括正整数、0和负整数。Python 的整型支持存储各种整数值,无论多大或者多小。除此之外,Python 的整型还支持 None 值(空值)。

a = 5
a = 9999999999999999
print(type(a))
a = None 

输出结果:
<class 'int'>

   整型数值有 4 种表示形式:

    1.十进制形式:最普通的整数就是十进制形式的整数,在使用十进制表示整数值时,不能以 0(零)作为十进制数的开头(数值是 0 除外)。

    2.二进制形式:由 0 和 1 组成,以 0b 或 0B 开头。

    3.八进制形式:八进制整数由 0~7 组成,以 0o 或 0O 开头(第一个字母是零,第二个字母是大写或小写的 O)。需要注意的是,在 Python 2.x 中,八进制数值还可以直接以 0(零)开头。

    4.十六进制形式:由 0~9 以及 A~F(或 a~f)组成,以 0x 或 0X 开头。

a = 0x13
print("a的值为:", a)

b= 0b111
print('b的值为:', b)

c= 0o54
print('c的值为:', c)

  为了提高数值(包括浮点型)的可读性,Python 3.x 允许为数值(包括浮点型)增加下画线作为分隔符。这些下画线并不会影响数值本身。

price = 123_456_789     # price实际值为123456789

 2、浮点型

  浮点型数值用于保存带小数点的数值,Python 的浮点数有两种表示形式:

    1.十进制形式:这种形式就是平常简单的浮点数,例如 5.12、512.0、0.512。浮点数必须包含一个小数点,否则会被当成整数类型处理。

    2.科学计数形式:例如 5.12e2(即 5.12×102)、5.12E2(也是 5.12 ×102)。

  只有浮点型数值才可以使用科学计数形式表示。例如 51200 是一个整型值,但 512E2 则是浮点型值。

a = 1.234
print("a的值为:", a)
print("a的类型为:", type(a))
b = 1.23e2
print("b的值为:", b)
print("b的类型为:", type(b))
c = 2e3
print("c的值为:", c)
print("c的类型为:", type(c))

输出结果:
a的值为: 1.234
a的类型为: <class 'float'>
b的值为: 123.0
b的类型为: <class 'float'>
c的值为: 2000.0
c的类型为: <class 'float'>

 3、复数

  python可以支持复数,复数的虚部用 j 或 J 来表示。

a = 1 + 0.2j
print(a)
print(type(a))
b = 3 - 0.1j
print(b)
# 复数运行
print(a + b)

输出结果:
(1+0.2j)
<class 'complex'>
(3-0.1j)
(4+0.1j)

 

三、字符串

1、字符串

  就是”一串字符”,字符串必须使用引号括起来,可以使用单引号或者双引号(二者没有区别)。字符串中的内容几乎可以包含任何字符,英文字符也行,中文字符也行。

  如果字符串内容本身包含了单引号或双引号,此时就需要进行特殊处理:

    1.使用不同的引号将字符串括起来。

    2.使用转义字符对引号进行转义。python 允许使用反斜线 \ 将字符串中的特殊字符进行转义。

  input() 函数返回用户输入的值,用户可以输入任何内容,input() 函数总是返回一个字符串。

a = ' "I love you", he said. '
b = ' he said,"let\'s go." '

a = input('输入一个值:')
print(type(a), a)        # 输入123

输出结果:
<class 'str'> 123

2、长字符串

  使用三个引号定义长字符串,该长字符串中既可包含单引号,也可包含双引号。如果所定义的长字符串没有赋值给任何变量,也就相当于注释掉了。

s = '''
    日照香炉生紫烟,
    遥看瀑布挂前川。
    飞流直下三千尺,
    疑是银河落九天。
'''

3、原始字符串

  由于字符串中的反斜线都有特殊的作用,因此当字符串中包含反斜线时,就需要使用转义字符 \ 对字符串中包含的每个 \ 进行转义。原始字符串以“r”开头,它不会把反斜线当成特殊字符。

s = 'D:\\python\\libs'
s = r'D:\python\libs'

4、转义字符

   在指定字符前添加反斜杠 \,以此来表示对该字符进行转义。python 中常用的转义字符:

\        在行尾的续行符,即一行未完,转到下一行继续写
\' 单引号
\" 双引号
\0
\n 换行符
\r 回车符
\t 水平制表符,用于横向跳到下一制表位
\a 响铃
\b 退格(Backspace)
\\ 反斜线

 

四、bytes类型

  字符串(str)由多个字符组成,以字符为单位进行操作;字节串(bytes)由多个字节组成,以字节为单位进行操作。bytes 对象只负责以字节(二进制格式)序列来记录数据。

  如果希望将一个字符串转换成 bytes 对象,有如下三种方式:

  1. 如果字符串内容都是 ASCII 字符,则可以通过直接在字符串之前添加 b 来构建字节串值。
  2. 调用 bytes() 函数(其实是 bytes 的构造方法)将字符串按指定字符集转换成字节串,如果不指定字符集,默认使用 UTF-8 。
  3. 调用字符串本身的 encode() 方法将字符串按指定字符集转换成字节串,如果不指定字符集,默认使用 UTF-8 。
a = b"hello"
print(a)
b = bytes('飞流直下三千尺', encoding='utf8')
print(b)
c = '飞流直下三千尺'.encode()
print(c)

输出结果:
b'hello'
b'\xe9\xa3\x9e\xe6\xb5\x81\xe7\x9b\xb4\xe4\xb8\x8b\xe4\xb8\x89\xe5\x8d\x83\xe5\xb0\xba'
b'\xe9\xa3\x9e\xe6\xb5\x81\xe7\x9b\xb4\xe4\xb8\x8b\xe4\xb8\x89\xe5\x8d\x83\xe5\xb0\xba'

如果程序获得了 bytes 对象,也可调用 bytes 对象的 decode() 方法将其解码成字符串。

d = c.decode()
print(d)

输出结果:
飞流直下三千尺

 

五、布尔类型

  python提供了 bool 类型来表示真(True)或假(False),布尔类型可以当做整数来对待,即 True 相当于整数值 1,False 相当于整数值 0。

print(5 > 3)
print(5 < 3)
print(1 + True)
print(1 + False)

输出结果:
True
False
2
1

 

六、格式化字符串

  python提供了 % 对各种类型的数据进行格式化输出。

%d,%i 转换为带符号的十进制形式的整数
%o 转换为带符号的八进制形式的整数
%x,%X 转换为带符号的十六进制形式的整数
%e 转化为科学计数法表示的浮点数(e 小写)
%E 转化为科学计数法表示的浮点数(E 大写)
%f,%F 转化为十进制形式的浮点数
%g 智能选择 %f 或 %e 格式
%G 智能选择 %F 或 %E 格式
%c 格式化字符及其 ASCII 码
%r 使用 repr() 将变量或表达式转换为字符串
%s 使用 str() 将变量或表达式转换为字符串

 当使用上面的转换说明符时,可指定转换后的最小宽度,指定了字符串的最小宽度为 6,因此程序转换数值时总宽度为 6,程序自动在数值前面补充了三个空格。

n = 123
print('num is %6d' % n)
print('num is %6o' % n)
print('num is %6x' % n)
print('num is %6e' % n)

输出结果:
num is    123
num is    173
num is     7b
num is 1.230000e+02

 在默认情况下,转换出来的字符串总是右对齐的,不够宽度时左边补充空格。python 也允许在最小宽度之前添加一个标志来改变这种行为,Python 支持如下标志:

  -:指定左对齐。

  +:表示数值总要带着符号(正数带“+”,负数带“-”)。

  0:表示不补充空格,而是补充 0。

对于转换浮点数,Python 还允许指定小数点后的数字位数:如果转换的是字符串,Python 允许指定转换后的字符串的最大字符数。这个标志被称为精度值,该精度值被放在最小宽度之后,中间用点 ( . ) 隔开。

n = 123.456789
print("n is: %8.3f" % n)
print("n is: %08.3f" % n)
print("n is: %+08.3f" % n)

s = "python"
print("s is: %.3s" % s) 
print("s is: %10.2s" % s)

输出结果:
n is:  123.457
n is: 0123.457
n is: +123.457
s is: pyt
s is:         py