python的应用领域
系统运维、网络编程(搜索引擎、爬虫、服务器编程)、科学计算、人工智能、机器人、web开发、云计算、大数据及数据库编程、教育、游戏、图像处理..........
python程序{模块:{'数据','函数':{'语句':['表达式']},'类'}}
运行两种模式:
python3 xxxx.py
交互模式:
python3 <回车>
>>>
1、python是一门解释型语言
python在执行程序时,会把程序一条一条的解释成机器语言(机器可执行的目标代码)来执行,在程序运行的前一刻,还只有源程序而没有可执行的程序,当程序每执行到源程序的某一条指令,就会有一个称为解释程序的外壳程序将源程序转换成二进制代码以供执行;“编译”是将源程序的翻译和执行一次性的转换成机器语言(二进制代码)。
Java语言虽然比较接近解释型语言的特征,但在执行之前已经预先进行一次预编译,生成的代码是介于机器码和Java源代码之间的中介代码,运行的时候则由JVM(Java的虚拟机平台,可视为解释器)解释执行。它既保留了源代码的高抽象、可移植的特点,又已经完成了对源代码的大部分预编译工作,所以执行起来比“纯解释型”程序要快许多。
2、python是一门动态语言
动态语言编程时,永远不需要给任何变量指定数据类型,Python会在第一次给变量赋初值的时候,就指定变量的数据类型,
3、python是一门强类型语言
当变量被指定数据类型的时候,除非经过强制类型转换,否则该变量的数据类型就是原变量数据类型。
python编程时:
当使用x = input()函数时,x的数据类型是字符串类型,所以当用户输入数字时,要经过数据类型转换,
当使用print("***")函数时,字符串拼接符'+'拼接的必须是字符串,如果想要拼接数字,要用str(数字)进行强制数据类型转换。
4、字符编码
一个字节8个比特位(bit)
(1)、ASCII---美国,ASCII占用一个字节
字符串 十进制 十六进制
'0' 48 0x30
'A' 65 0x41
'a' 97 0x61
(2)、GB2312--简体中文 big--繁体中文,一个中文字符占用3个字节,各国有各国的标准,就会出现不可避免的冲突,结果就是在多种语言混合的 文本分钟,会显示出乱码。
(3)、Unicode--统一码、万国码(每国语言的每个字符 设定统一并且唯一的二进制编码),
\uxxxx 16位(bit)-2字节Unicode编码
\uxxxxxxxx 32位
Ubicode编码通常是2个字节,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
(4)、UTF-8编码
UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间:
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:
十进制:2;45;94641
八进制:0o177(127);0o11(9)
十六进制:0x11(17);0xFF (255);
二进制:0b111;0b101
函数的使用
1.a,b = 1,2 #交叉赋值,所以交换a,b的数据不需要再创建一个变量
2.del 变量名; 删除变量,接触与对象的关联关系,如果可能释放对象
1.complex(a,b)可以用数字创建一个复数 (a+bj)
2.bool(obj)返回Ture 或者 Flase
3.is;is not; 判断两个对象是否是同一个对象,如果是返回True,否则返回False
3.id(ibj) 返回一个对象在内存中的地址
3.abx(x)绝对值
3.str.index('**') 从str字符串中查找**的索引
3.字符串的切片
字符串序列[(开始索引b):(结束索引e)(:(步长s))]
3.len(x) 求序列的长度
3.ord(c) 返回一个字符的Unicode值
3.chr(i) 返回i这个整数值所对应的字符
3.bin(i) 将整数转换为二进制字符串
3.oct(i) 将整数转换为八进制字符串
3.hex(i) 将整数转换为十六进制字符串
3.in / not in 判断字符串是否在,返回True or False
3.print(1,2,3,sep='*'), sep:两个值之间的分隔号*
3.print(1,2,3,end=''),end:输出完毕后在末尾自动追加一个字符串,print()中默认end=('/n')所以print函数会换行,我们用end=' '可以让结果以 结尾避免换行,通常用来避免不同print之间的换行
3.python的字符串是不可以改变的字符序列
3.pass 通常用来避免空白,pass语句通常称之为空语句
3.None 空值 用来占位;用来解除变量,0, 0.0, 0j, ''空字符串,[]空列表,()空元组,{}空字典
3.运算符 +; -; *; /; //地板除,结果去除小数取整; **幂运算;%求余
4.round(number,ndigits=0)对number进行四舍五入,ndigits是小数点向右取整的位数,负数表示先左取整的位数
5.pow(x,t,z)相当于x**y或者x**y%z
6.help(函数)函数查看文档
7.%占位符 print("我叫%s,年龄%d"%("LXP-Never",23))
8.input() python默认所有的输入都是"字符串"类型
3.list() 创建空列表或L = [] list(range()) 用可迭代对象创建一个列表
9.help('_main_') 在交互模式在查看当前作用域的所有变量 退出键:q
9.str() 字符串构造函数
str(123) #结果 #‘123’
10.raw字符串(原始字符串)
格式:r'字符串内容'
r“字符串内容”
r'''字符串内容'''
r"""字符串内容"""
作用:
让转义字符无效 \ 无效
1 #Author:凌贤鹏 2 s = 'C:\newfile\test.py' 3 print(s) 4 print(len(s)) 5 s = r'C:\newfile\test.py' 6 print(s) 7 print(len(s)) 8 #结果 9 #C: 10 #ewfile est.py 11 #16 12 #C:\newfile\test.py 13 #18
10.字符串编码转换成数字:
ord(c) 返回一个字符的Unicode值
chr(c) 返回这个整数值所对应的字符
整数转换成字符串函数:
bin() 将整数转换成二进制字符串
orc() 将整数转换成八进制字符串
hex() 将整数转换成十六进制字符串
1.转义字符:
\' 单引号(')
\" 双引号(")
\\ 一个反斜杠
\n 换行
\r 返回光标至行首
\t 水平制表符
\v 垂直制表符
\f 换页
\b 倒退
\0 空字符,字符值为零
\xXX XX为两位十六进制表示的字符
\uXXXX XXXX为四个十六进制表示的Unicode16字符
\UXXXXXXXX 8个十六进制表示的Unicode32字符
这些转义字符要在" "字符串中打印
字符串的方法
对象.方法(方法传参)
假设字符串的变量名为s
方法 | 说明 |
---|---|
S.isdigit() |
判断字符串中的字符是否全为数字 |
S.isalpha() |
判断字符串是否全为英文字母 |
S.islower() |
判断字符串所有字符是否全为小写英文字母 |
S.isupper() |
判断字符串所有字符是否全为大写英文字母 |
S.isspace() |
判断字符串是否全为空白字符 |
S.center(width[,fill]) |
将原字符串居中,左右默认填充空格 |
S.count(sub[, start[,end]]) |
获取一个字符串中子串的个数 |
S.find(sub[, start[,end]]) |
获取字符串中子串sub的索引,失败返回-1 |
S.strip() |
返回去掉左右空白字符的字符串 |
S.lstrip() |
返回去掉左侧空白字符的字符串 |
S.rstrip() |
返回去掉右侧空白字符的字符串 |
S.upper() |
生成将英文转换为大写的字符串 |
S.lower() |
生成将英文转换为小写的字符串 |
S.replace(old, new[, count]) |
将原字符串的old用new代替,生成一个新的字符串 |
S.startswith(prefix[, start[, end]]) |
返回S是否是以prefix开头,如果以prefix开头返回True,否则返回False, |
S.endswith(suffix[, start[, end]]) |
返回S是否是以suffix结尾,如果以suffix结尾返回True,否则返回False |
以下是不常用的 |
|
S.title() |
生成每个英文单词的首字母大写字符串 |
S.isnumeric() |
判断字符串是否全为数字字符 |
1.注释:单行注释#,多行注释''' '''或者""" """。
单引号还可用于打印多行内容,x = ''' '''。
3.range()函数 用来创建一个生成一系列整数的可迭代对象(整数序列生成器),range函数的返回值可用于for语句来一次迭代输出整数,生成的是数字序列
range(start,stop) 从start开始,到stop,但是不包括stop,可以取步长
3.列表可以嵌套列表 L = [1, 2, [3.1, 3.2, 3.3], 4]
列表会把字符串分开来, L = list("hello") # L = ['h', 'e', 'l', 'l', 'o']
列表可以用运算符(+ - * )进行拼接、重复
3.重复要做的事放在循环内
3.for 循环中else 语句,是遍历完对象后,再执行else中的代码
练习:
1. 中国古代的秤是16两一斤,请问古代对216两是古代的几斤几两,写程序打印出来?
1 liang = 216 2 3 jin = 216 // 16 # 得到斤 4 l = 216 % 16 5 print('是古代的', jin, '斤', l, '两')
2. 从凌晨 0:0:0 计时,到现在已经过了63320秒,
请问现在是几时,几分,几秒,写程序打印出来
提示:
可以用地板除和求余实现
1 s = 63320 # 秒 2 3 hour = s // 60 // 60 # 小时 4 minute = s % 3600 // 60 # 分钟 5 second = s % 60 # 秒 6 print(hour, ":", minute, ":", second)
3. 温度转换:
摄氏温度 = 5.0/9.0*(华氏温度-32)
1 f = 100 2 c = 5.0 / 9.0 * (f - 32) 3 print("摄氏温度是:", c) 4 # 摄氏温度 = 5.0/9.0*(华氏温度-32) 5 # 摄氏温度*9.0/5.0 = (华氏温度-32) 6 # 摄氏温度*9.0/5.0 + 32 = 华氏温度 7 f = 100 * 9.0/ 5.0 + 32 8 print("华式温度是:", f)
自动化内存管理和引用计数:
每个对象都会记录有几个变量绑定(引用)自身,当引用的数量为0时,则此对象将被销毁(释放内存资源), 此种自动化内存管理的方式叫引用计数
小整数对象池
CPython中,整数-5至256的数永远存在于小整数池中,不会释放且可重复使用
示例:
a = 100
b = 100
a is b # True
ASCII 编码:
ASCII字符表:
$ man ascii<回车>
sublime 注释快捷键 ctrl + /