markdown 格式
加入链接(https://www.baidu.com /)
print("ss")
姓名 | 年龄 | 住址 |
---|---|---|
lilei | 18 | zz |
:-: 居中
y=kx+b
吉多范罗苏姆 创始人python
源代码- 编译- 目标代码 -执行 -输出
一次编译 多次执行
编译型,解释型动态语言 静态语言 强定义 弱定义语言
#历史
-
动态
-
静态
-
编译
-
解释
-
强类型
-
弱类型
(3)优缺点
优点
Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。
开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。
高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
缺点:
速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用C运一个程序花了0.1s,用Python是0.01s,这样C语言直接比Python快了10s,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的。
代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。
线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨。
(4)python种类
编译型,解释型动态语言 静态语言 强定义 弱定义语言
#2.python基础
##2.1第一条编程语句
print('hello python')
print('hello,python!')
print('to be,or not to be,its a question
print('to be,or not to be,its up to you.
print('make it!')
print('以梦为马,不负韶华!')
2.2 print()函数
作用:在控制台打印信息;
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
2.3注释
- 单行注释
- 多行注释
三双引号 三单引号
“”" ‘’’
demo:
print('hello,python!')
print('to be,or not to be,its a question')
print('to be,or not to be,its up to you.')
print('make it!')
print('以梦为马,不负韶华!')
2.4input()函数
作用:从外部获取值
用法:括号中可提供提示信息
a=int()
a=input()
123
print(a)
123
type(a)
<class 'str'>
2.5脚本运行
1解释器环境运行
2脚本运行
3 IDE
- pycharm
- sublime
- vs code
- atom
2.6python 常见的 字符串类型
数据的概念
python中的数据类型
-
数字(number)
-
整型(int)
-
浮点型(float)
-
布尔型(bool)
-
复数(complex)
-
-
字符串(str)
-
列表(list)
-
元组(tuple)
-
字典(dict)
-
集合(set)
2.7常见的变量和常量
变量
-
概念
-
程序可操作的存储区的名称
-
程序运行时存储区中能够改变的数据
-
每个变量斗鱼自己特定的数据类型
-
-
作用
- 将数据存储到内存
-
变量的定义
- 命名
规则:
必须是字母,下划线,数字组合
不能以数字开头
不可以是python中的关键字
注意:见名知意
区分大小写
在python中,单下划线和双下划线的变量有特殊的通途,一般不推荐使用单下划线和双下划线开头的变量名称
-
变量的定义
-
val_name= 初始值
拓展:
关键字的查看
>>> import keyword
>>> keyword.kwlist
>>> ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
以下哪些名称正确
666,错
city6666,对
_56city,对
类型测试
type(val_name)
内存地址
id(val_name)
不变的量
pi,3.1415926
通常用大写
PI=3.1515926
举例:
tp=1,2,3
x,y,z=tp
x=1,y=2,=3 元组类型
2.8数字
###种类
-
整型(int)
- 32bit,取值范围 − 2 31 − 2 31 − 1 -2^{31}- 2^{31}-1 −231−231−1
- 64bit,取值范围 − 2 63 − 2 63 − 1 -2^{63}-2^{63}-1 −263−263−1
-
浮点型
- 带有小数点的数字
-
布尔型
- True
- Flase
-
复数(complex)
- cpx=complex(3,4)
- 输出(3+4j)
- 实部(cpx.real)
- 虚部(cpx.imag)
- 共轭复数(cpx.conjugate)
常见的数学函数
函数名 | 描述 |
---|---|
abs(x) | 绝对值 |
pow(x,y) | x y x^y xy |
round(x,[n]) | 返回四舍五入的值,如果给出n,表明四舍五入后的小数点的位数 |
math.exp(x) | 返回e的x次幂 |
math.fabs(x) | 返回绝对值,类型为浮点数 |
math.ceil(x) | 返回数字的上入整数 |
math.floor(x) | 返回数字的下舍整数’ |
math.log(x,[y]) | 单参数默认以e为底,双参数以y为底 inx,logyx |
math.modf(x) | 返回浮点数的小数部分和整数部分 |
math.sqrt(x) | 平方根,开根号 |
m a x ( x 1 , x 2 , . . . . ) max(x_1,x_2,....) max(x1,x2,....) | 返回最大值 |
m i n ( x 1 , x 2 , . . . . ) min(x_1,x_2,....) min(x1,x2,....) | 返回最小值 |
2.9表达式与运算符
-
表达式
- 由变量,常量和运算符组成的式子,成为表达式
-
运算符
- 算数运算符
- 比较运算符
- 逻辑运算符
- 赋值运算符
- 成员运算符
- 身份运算符
- 位运算符
python算术运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 相加/拼接 | a+b |
- | 相减/求差集 | a-b |
* | 相乘/重复 | a*b |
/ | 相除 | a/b |
** | 幂运算 | a**b |
% | 取模(余) | a%b |
// | 取整数(商) | a//b |
divmod(23,4)输出(5,3)同时求商和余数
python比较运算符
python赋值运算符
python的位运算符
按位运算符是把数字看做为二进制来计算的。常见的位运算符如下:
运算符 | 描述 |
---|---|
& | 按位‘与’,同为1才为1,否则为0 |
| | 按位‘或’,有1即为1 |
^ | 按位‘异或’,不同为1 |
~ | 按位‘取反’,~x得到-x-1 |
<< | 左移运算符 |
>> | 右移运算符 |
a=15
b=31
a&b
~a=-16
a>>2
a=0000 0011 =3
a<<2
a=0011 1100 =60
二进制对应
a--->0000 1111
b--->000 11111
a&b---> 0000 1111返回a 15
a|b --->0001 1111 返回b 31
a^b--->0000 1000 返回16
python成员符运算
测试是否包涵某个成员,一般测试字符串,列表,元组
运算符 | 描述 |
---|---|
in | 如果存在指定序列中,返回true,否则false |
not in | 如果不存在指定序列中,返回false,否则true |
>>> str='a '
>>> 'a' in str
True
python的身份运算符
用于比较两个对象的存储单元
id()
运算符 | 描述 |
---|---|
is | 判断两个标识符是不是引用自同一个对象 |
not is | 判断两个标识符是不是引用自同一个对象 |
>>> a='ab'
>>> b='ab'
>>> a is b
True
python的逻辑运算符
and
or
not
2.10 数据类型的强制转换
强制类型 | 描述 |
---|---|
int(x,[base]) | 将x强制转化为整型,如果x为字符串,需要制定base基数 |
float(x) | 将x转化为浮点型 |
str(x) | 强转为字符串 |
repr() | 将对象转化为表达式字符串 |
list(x) | |
tuple(x) | |
dict(x) | |
set(x) | |
chr(x) | 将整数转化为字符 |
ord(x) | 将字符转化为数值 |
bin(x) | 转为二进制 |
oct(x) | 转为8进制 |
hex(x) | 转为十六进制 |
>>> str='123'
>>> int(str,16)
291= $1*16^{2}+2*16^{1}+3*16^{0}$
>>> int(str,8)
83
>>> ord('成')
25104
>>> x=256
>>> bin(x)
'0b100000000'
>>> oct(x)
'0o400'
>>> hex(x)
'0x100'
2.11随机函数
导入这个模块
import random
rondom模块的常见功能
(1)random.random()
-
用来生成一个0-1的随机浮点数[0,1)
import random #print(dir(random)) for i in range(100): a=random.random() print(a,end='')
(2)random.uniform(a,b)
-
生成指定范围内的浮点数[a,b]
import random #print(dir(random)) for i in range(100): a=random.uniform(6,8) print(a,end='')
(3)random.randint(a,b)
-
生成指定范围内的整数[a,b]
import random #print(dir(random)) for i in range(100): a=random.randint(6,8) print(a,end='')
(4)random.randrange([start],stop,[step])
-
从指定范围内,按指定基数递增或者递减的集合中,随机获取一个
import random #print(dir(random)) for i in range(100): a=random.randrange(1,16,3) 取的值为1,4,7,10,13,16 print(a,end='')
(5)random.choice(sequence)
- 从序列中随机获取一个元素,sequence可以为列表,字符串或者元组
import random
#print(dir(random))
list=['c language','c++','python']
for i in range(100):
a=random.choice(list)
print(a,end= " ")
(6)random.shuffle(x,[random])
- 用来将一个列表的元素打乱。即将列表元素重新排列。
import random
#print(dir(random))
list=['c language','c++','python']
str='c language'
for i in range(100):
random.shuffle(list)
print(list)
(7)random.sample(sequence,k)
- 用来从指定序列中随机获取指定长度的片段并随机排列。但不会修改原来的序列。
import random
#print(dir(random))
list=['c language','c++','python']
str='c language'
for i in range(100):
print(random.sample(list,2))