python基础汇总

python基础

python:是强语言类型的动态脚本语言。
强类型:不允许不同类型相加减等运算。
动态:不使用显示数据类型申明,且确定一个变量的类型是在第一次给她赋值的时候。
脚本语言:一般也是解释型语言,运行代码只需要一个解释器,不需要编译。

一 、基础语法

输入输出
代码中修改不可变数据,代码不会正常运行并抛出 TypeError 异常
异或运算符 ^ : 是在二进制层面上进行同为0,异为1的运算
位运算符 << ,>> : 在二进制层面 对数据进行左右位移并补零,的操作
print 底层调用:print 方法默认调用 sys.stdout.write 方法,即往控制台打印字符串
input() 在 python2/3 中的不同 :python3中统一只有print(),输出统一为字符串。在python2 中有 raw_input()和python中print()功能一致,input()输入和输出的类型一致。
常用的python标准库:os 操作系统,time 时间,random 随机,pymysql 连接数据库,threading 线程,multiprocessing 进程,queue 队列。
第三方库:djando,flask,celery,scrapy,selenium,requests,virtualenv,re 。
常用的科学计算库:Numpy,Scipy,Pandas 。
对象:python中万物皆对象,但在类对象中,先由 __new__方法创建对象并开辟内存空间,再由__init__方法对对象进行初始化。
随机数:random.random() 生成一个0-1之间的随机浮点数。
os.path和sys.path区别:os.path主要是用于对系统路径文件的操作。sys.path主要是对python解释器的系统环境参数的操作(用于动态的改变python解释器搜索路径)。
日志:python中自带logging模块,调用logging.basicConfig()方法,配置需要的日志等级和相应的参数,python解释器会按照配置的参数生成相应的日志。
python提升性能的手段:1、使用多进程,充分利用机器的多核性能。2、对于性能影响较大的算法部分可以使用c或者c++编写。3、尽量使用python的内建函数。5、尽量使用局部变量。
python中的作用域:python中一个变量的作用域总是由在代码中被赋值的地方所决定,当python遇到一个变量的话它会按照以下顺序进行搜索:
本地作用域(local)–> 当前作用域被嵌入的本地作用域(Enclosing local) -->全局/模块作用域(Global) -->内置作用域(Built-in)。
python中开平方根

import math

math.sqrt( x )  # 对x开平方根

python一般编码遵循的规范:PEP8
PEP8一般写法:
1、私有变量:一个前导下划线加小写 _private_value。(pyhton中不存在私有变量一说,这只是程序员之间的约定,用于警告这是一个私有变量外部类就不要去访问它,实际上还是可以访问到的)
2、内置变量:小写,两个前导两个后导下划线 _ _ class _ _。
3、类名:首字母大写其余小写的驼峰式命名。
4、使用 has 或 is 前缀来命名 布尔元素,如 is _ connect = True、has _ member = False 。
linux中find和grep区别:find搜索匹配的文件,grep查找匹配条件的行:
可变不可变类型:可变:列表、元组,不可变:数值、字符串、元组。
关于list中的extend()方法

c = (12,4,2,3,43,243)
d = {"d":12,"c":34}
a = [3, 5, -6, 2, 1]
a.extend(c)
print(a)
a.extend(d)
print(a)
#  结果:
[3, 5, -6, 2, 1, 12, 4, 2, 3, 43, 243]
[3, 5, -6, 2, 1, 12, 4, 2, 3, 43, 243, 'd', 'c']
#  你没有看错这个方法犹如流氓一般可以吧各种可迭代数据类型强转为列表后追加到原list后边。

超出索引结果:尝试获取超出列表范围的值并不会报错只是会返回一个空列表,这可能会产生一些难以排查的疑难杂症,需要注意!
python中特殊运算符 ^ & |:下方列出式子自行体会

list1 = [1,2,3]
list2 = [2,3,5]
set1 = set(list1)
set2 = set(list2)
print(set1&set2)  # 与运算  取 交
print(set1^set2)  # 异或运算 取 并减交
print(set2|set1)  # 或运算 取 并
#  结果:
{2, 3}
{1, 5}
{1, 2, 3, 5}

hasattr()、getattr()、setattr() 函数
hasattr(object, name)函数:判断一个对象里面是否有name属性或者name()方法,返回bool值,有返回True,没有返回False。
getattr(object, name[,default])函数:获取对象的属性或者方法,如果存在则打印出来,不存在打印默认值,默认值可选即式中的[,default]。注意:如果返回的是对象的方法则打印结果是该方法的内存地址,如果需要运行这个方法可以在后面添加括号()。
setattr(object, name, values)函数:给对象的属性赋值,若属性不存在,先创建再赋值。
is 和 == 的区别:is判断的是a对象是否就是b对象,通过内存地址id来判断。== 是判断a对象的值是否和b对象的值相等,是通过value来判断。
进程:一个运行的程序就是一个进程,没有运行的代码就叫程序,进程是系统资源分配的最小单位,进程拥有自己的内存空间,所以进程间数据不共享,开销大。
线程:调度执行的最小单位,也叫执行路径不能独立存在,依赖进程,一个进程至少有一个线程叫主线程,多个线程之间共享数据从而极大地提高了程序的运行效率。
协程:是一种轻量级线程,协程的调度完全由用户控制。协程有自己的寄存器上下文栈。所以上下文切换非常快。
几个概念

  1. 同步:多个任务之间有先后顺序执行,一个执行完后才执行下一个。
  2. 异步:多个任务之间没有先后顺序,可以同时执行,有的时候一个任务可能要获取另一个同时执行的任务的结果,这个就叫回调。
  3. 阻塞:如果卡住了调用者,调用者不能继续往下执行就是说调用者阻塞了。
    并行:同一时刻多个任务同时在运行。
    并发:在同一时间间隔内多个任务都在运行但不会在同一时刻运行,存在交替执行的情况。
    IO密集型 CPU密集型
    IO密集型:系统运作,大部分状况是cpu在等I/O(硬盘/内存)的读写。
    CPU密集型:大部分时间来做计算、逻辑判断等。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值