变量
变量定义
在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建
等号(=)用来给变量赋值 = 左边是一个变量名,= 右边是存储在变量中的值
变量名 = 值
变量定义之后,后续就可以直接使用了
变量的类型
在内存中创建一个变量,会包括:
变量的名称
变量保存的数据
变量存储数据的类型
变量的地址(标示)
在Python中定义变量是 不需要指定类型(在其他很多高级语言中都需要)
Python可以根据等号右侧的值,自动推导出变量中存储数据的类型
数据类型可以分为 数字型 和 非数字型
变量的命名规则
变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头
Python是一门动bai态语言,也可以称为是一du种弱类zhi型语言,在变量定义时dao,并不需要明确zhuan的给出数据的类型,shu程序在执行时,解释器会根据实际数据的类型进行自动推导。
由字母、数字、下划线组成
只能以字母或者下划线开头
尽量不要和关键字重名
s = 'hello#'是错误的命名,因为含有特殊字符
PYTHON是一门动态解释性的强类型定义语言:编写时无需定义变量类型;运行时变量类型强制固定;无需编译,在解释器环境直接运行。
动态和静态
静态语言:是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。例如:C++、Java、Delphi、C# 、go等。
动态语言:是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。例如:Python、Ruby、Perl等。
强类型和弱类型
强类型和弱类型主要是站在变量类型处理的角度进行分类的。
强类型是指不允许隐式变量类型转换,弱类型则允许隐式类型转换。
所以,关键在于变量数据类型的转换。
隐式类型转换
隐式是指源码中没有明显的类型转换代码,也就是说,一个变量,你可以直接给他赋值字符串,也可以直接给他赋值数值,你还可以直接让字符串类型的变量和数值类型的变量相加,虽然得出的最终结果未必是你想象的那样,但一定不会报错。
这就是隐式类型转换,弱类型语言,如javascript、php。
Java是强类型语言,不允许隐式类型转换,也就是说,如果你需要拿一个字符串变量当做整型来用,你必须显式地将变量类型转换好。
换句话说:
强类型语言,当你定义一个变量是某个类型,如果不经过代码显式转换(强制转化)过,它就永远都是这个类型,如果把它当做其他类型来用,就会报错
弱类型语言,你想把这个变量当做什么类型来用,就当做什么类型来用,语言的解析器会自动(隐式)转换。
数值
int(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) | 将一个整数转换为一个八进制字符串 |
数学函数 | |
---|---|
abs(x) | 返回数字的绝对值,如abs(-10) 返回 10 |
ceil(x) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 |
cmp(x, y) | 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 |
exp(x) | 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 |
fabs(x) | 返回数字的绝对值,如math.fabs(-10) 返回10.0 |
floor(x) | 返回数字的下舍整数,如math.floor(4.9)返回 4 |
log(x) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
log10(x) | 返回以10为基数的x的对数,如math.log10(100)返回 2.0 |
max(x1, x2,…) | 返回给定参数的最大值,参数可以为序列。 |
min(x1, x2,…) | 返回给定参数的最小值,参数可以为序列。 |
modf(x) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 |
pow(x, y) | x**y 运算后的值。 |
round(x [,n]) | 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。 |
sqrt(x) | 返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j |
布尔值
字符编码
编码方式
1.ASCII 现在我们面临了第一个问题:如何让人类语言,比如英文被计算机理解?我们以英文为例,英文中有英文字母(大小写)、标点符号、特殊符号。如果我们将这些字母与符号给予固定的编号,然后将这些编号转变为二进制,那么计算机明显就能够正确读取这些符号,同时通过这些编号,计算机也能够将二进制转化为编号对应的字符再显示给人类去阅读。由此产生了我们最熟知的ASCII码。ASCII
码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。这样在大部分情况下,英文与二进制的转换就变得容易多了。
2.GB2312 虽然计算机是美国人发明的,但是全世界的人都在使用计算机。现在出现了另一个问题:如何让中文被计算机理解?这下麻烦了,中文不像拉丁语系是由固定的字母排列组成的。ASCII
码显然没办法解决这个问题,为了解决这个问题,中国国家标准总局1980年发布《信息交换用汉字编码字符集》提出了GB2312编码,用于解决汉字处理的问题。1995年又颁布了《汉字编码扩展规范》(GBK)。GBK与GB
2312—1980国家标准所对应的内码标准兼容,同时在字汇一级支持ISO/IEC10646—1和GB
13000—1的全部中、日、韩(CJK)汉字,共计20902字。这样我们就解决了计算机处理汉字的问题了。
3.Unicode 现在英文和中文问题被解决了,但新的问题又出现了。全球有那么多的国家不仅有英文、中文还有阿拉伯语、西班牙语、日语、韩语等等。难不成每种语言都做一种编码?基于这种情况一种新的编码诞生了:Unicod