Python基础语法1

everything is possible ---nothing is impossible

摘要:输入输出、条件与循环,文件操作,异常,模块与包,python特性、linux基础与git

1基础语法:

1:输入与输出:

1,修改不可变数据会抛出TypeError错误

2,print默认调用了sys.stdout.write方法:向控制台输出字符串

3,input获取用户输入,都是字符串

Python2有raw_input,input。Input获取到的是输入的类型

2:条件循坏:

1,有个匿名函数--------------------------------------,2.1

2,range与xrange的区别是:功能相同,xrange只有使用才会开辟内存,性能好

3,字典在整个代码块中,只要字典名相同,则值全部相同,修改类似于浅拷贝

4,range(5,0,-1):5 4 3 2 1

3:文件操作

1,读取数据:通过代码制作一个生成器,切片读取拼接。也可以使用linux的split切割成小文件,在合成

2,文件操作的read:读取整个文件,受内存限制。Readline读取下一行,使用生成器的方法,readlines:读取整个文件到一个迭代器供我们遍历。

3,os的yunyong----------------------3.4

4:异常

1,except后还会执行finally方法,可以使用raise抛出异常

2,except:#捕获所有异常

Except 《异常名》:#捕获指定异常

Except 《异常名1》,《异常名2》: #捕获异常1或异常2

Except 《异常名》,《数据》: # 捕获指定异常及其附加的数据

Except 《异常1》,《异常2》,《数据》: # 捕获异常及数据

5:模块与包

1,1:常用的python标准库

os操作系统

time时间

random随机

pymysql链接数据库

threading线程

multiprocessing进程

queue队列

2第三方库:

django和flask

requests请求

virtualenv虚拟环境

selenium----------------------------不知道

scraoy-----------------------------不知道

xadmin--------------------------------不知道

celery异步启动任务

re正则

hashlib-------------------------------不知道

md5--------------------------------不知道

常用的科学计算库:Numpy,Scipy,Pandas

2,赋值、浅拷贝和深拷贝的区别

1赋值:就是简单的对象引用,和c++不同(仅仅是名称不同)

可以用id()查看两者的内存地址

2浅拷贝:会创建新的对象,对原对象的第一层对象的引用

切片操作:b = a[:] 或者 b = [x for x in a]

工厂函数:b = list(a)

copy函数:b = copy.copy(a)

3深拷贝:不仅创建新的对象,对内部所有对象都开辟了新的内存。不可变的对象则是引用,减少开销(原子类型的数据)

3,__init__和__new__的区别

__init__:对象创建后初始化

__new__:对象创建之前创建一个对象,并将该对象返回给init

4,python中生成随机数

import random

random.random():生成0-1之间的随机浮点数

random.uniform(a, b):生成a,b之间的随机浮点数

random.randint(a, b):生成a,b之间的随机整数

random.randrange(a , b, step):在指定的集合[a, b)中,以step为基数,随机区一个数

random.choice(sequence):从特定的序列中随机区一个元素,元素可以是字符串,列表,元祖等

random.shuffle(alist):随机排列列表

5,使用datetime模块,判断哪年哪月那日是这一年的第几天----5-5

1. import datetime

2. def dayofyear():

3. year = input("请输入年份:")

4. month = input("请输入月份:")

5. day = input("请输入天:")

6. date1 = datetime.date(year=int(year),month=int(month),day=int(day))

7. date2 = datetime.date(year=int(year),month=1,day=1)

8. return (date1 - date2 + 1).days

6,随机排列列表:random.shuffle(列表)

7,os.path和sys.path的区别

os.path:对系统路径文件的操作

sys.path:对python解释器的系统环境参数的操作(动态修改解释器搜索路径)

8,python中os模块的常见方法

os.remove():删除文件

os.rename():重命名文件

os.walk():生成目录树下的所有文件名

os.chdir():改变目录

os.mkdir/makedirs():创建目录、多层目录

os.rmdir/removedirs():删除目录、多层目录

os.listdir():列出指定目录的文件

os.getcwd():获得当前工作目录

os.chmod():改变目录权限

os.path.basename():去掉目录路径,返回文件名

os.path.dirname():去掉文件名,返回目录路径

os.path.join():将分离的各部分组合成一个路径名

os.path.split():返回(dirname(),basename())元组

os.path.splitext():(返回filename,extension)元组

os.path.getatime\ctime\mtime:分别返回最近访问、创建、修改时间

os.path.getsize():返回文件大小

os.path.exists():是否存在

os.path.isabs():是否为绝对路径

os.path.isdir():是否为目录

os.path.isfile():是否为文件

9,Python中sys的常用方法

sys.argv:命令行参数list,第一个元素是程序本身路径

sys.modules.keys():返回所有已经导入的模块列表

sys.exc_info():获取当前正在处理的一场类,exc_type、exc_value、 exc_traceback,当前处理的异常信息

sys.exit(n):退出程序,正常退出时exit(0)

sys.hexversion:获取python解释程序的版本值,16进制格式

sys.version:获取python解释程序的版本信息

sys.maxint:最大的int值

sys.maxunicode:做大的unicode值

sys.modules:返回系统导入的模块字段,key是模块名,value是模块

sys.path:返回模块的搜索路径,初始化时使用PYTHONPYTH环境变量的值

sys.paltform:返回操作系统平台的名称

sys.stdout:标准输出

sys.stdin:标准输入

sys.stderr:错误输出

sys.exc_clear():用来清除当前线程所出现的当前的获最近的错误信息

sys.exec_prefix:返回平台独立的python文件安装的位置

sys.byteorder:本地字节规则的指示器,big-endian 平台的值是'big',little-endian 平台的值是'little'

sys.copyright:记录python版权相关的东西

sys.api_version:解释器的C的API版本

sys.version_info:元组则体用一个更简单的方法来使你的程序具备python版本要求功能

10,unittest是什么?

python中unittest是单元测试框架,他拥有——支持共享搭建、自动测试。在测试中暂停代码、将不同测试迭代成一组等功能

11,模块和包是什么

(1) 模块是搭建程序的一种方式,每一个python代码文件都是一个模块,并可以应用其他的模块,比如对象和属性

(2) 一个包包含许多python代码的文件夹是一个包。一个包可以包含模块和子文件夹

6:Python特性

1,Python是强语言还是弱语言类型

Python是强类型的动态脚本语言

强类型:不允许不同类型想家

动态:不是痛显示数据类型声明,切确定一个变量的类型是在第一次给他赋值的时候

脚本语言:一般也是解释型语言,运行代码只需要一个解释器,不需要编译

2,解释型语言,编译型语言

计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要吧高级语言翻译成机器语言计算机才能执行高级语言编写的程序

(1) 解释型语言:在运行程序的时候才会进行翻译。

(2) 编译型语言:写的程序在执行之前,需要一个专门的编译过程,把程序编译成机器语言(可执行文件)

3,Python中的日志

Python自带logging模块,调用logging.basicConfig()方法,配置需要的日志等级和相应的参数,Python解释器会按照配置的参数生成相应的日志。

4,Python是如何进行类型转换的

内部封装了转换函数,list-tuple   tuple(list)  int(str)num字符

5,Python2与Python3的区别

(1) 核心类差异

(2) 废弃类差异

(3) 修改类差异

(4) 第三方工具包差异

(5) 工具安装问题

6,Python程序的运行方面,有什么手段可以提升性能

① 使用多进程,充分利用机器的多核性能

② 对于性能影响较大的部分代码,可以使用c或者c++编写

③ 对于IO阻塞造成的性能影响,可以你用IO多路复用来解决

④ 尽量使用Python的内建函数

⑤ 尽量使用局部变量

7,python中的作用域

Python中变量的作用于总是在代码中被赋值的地方所决定的,单号Python遇到一个变量的化,他会按照这个顺序进行搜索:

1本地作用域Local

2当前作用域被嵌入的本地作用域Enclosing locals

3全局/模块作用域Global

4内置作用域Built-in

8,什么是Python

(1) Python是一种变成语言,他有对象、模块、线程、异常处理、和自动内存管理,可以加入其他语言的对比

(2) Python是一种解释型语言,Python代码运行之前不需要解释

(3) Python是动态类型语言,在声明变量时,不需要说明变量的类型

(4) Python适合面向对象的变成,因为它支持通过组合与继承的方式定义类

(5) Python语言中,函数是第一类对象。

(6) Python代码编写快,但是运行速度比编译型语言通常要慢

(7) Python用途广泛,常备叫做‘胶水语言’,,可帮助其他语言和组件改善运行状况

(8) 使用Python,程序员可以专注于算法和数据结构的设计,而不用处理底层的细节

9,什么是Python的自省

Python具有的一种能力,是程序员面向对象的语言所写的程序在运行时,能够获得对象的类Python型,Python是一种解释型语言,为程序员提供了极大的灵活性和控制力

10,什么是Python的命名空间

python中,所有的名字都存在于一个空间中,他们在改空间中存在和被操作——这就是命名空间。

就像一个盒子,每一个变量名字都对应装着一个对象,当查询变量的时候会从该盒子里面寻找相应的对象。

11,你所遵循的代码规范是什么?

12,PEP8规范

(1) 变量

① 常量:大写加下划线。比如USER_CONSTANT

② 私有变量:小写和一个前导下划线。_private_value

python中不存在私有变量一说,就是和习惯,不希望被外部类访问到

③ 内置变量:小写,两个前导下划线和两个后置下划线。__class__

两个前导下划线会导致变量在解释期间被更名,这是为了避免内置变量和其他变量产生冲突。用户定义的变量要严格避免这种风格

(1) 

(2) 函数和方法,总体而言,小写和下划线

① 私有方法:小写和一个前导下划线

这个并不是真的私有访问权限,和变量一样,不要使用双下划线

② 特殊方法:小写和两个前导下划线,两个后置下划线

这种方法值应用与特殊函数,比如操作符重载等

③ 函数参数:小写和下划线,缺省(参数)值等号两边无空格

(3) 类:

① 类总是使用驼峰格式命名,即所有单词首字母大写其余字母小写。雷鸣应该简明,精确,并足以从中理解类所完成的工作。常见的一个方法是使用表示其类型或者特性的后缀,例如:SQLEngine,Mimetypes杜宇积累而言,可以使用一个Base或者Abstract前缀

(4) 模块和包

① 出特使模块__init__之外,模块名称都使用不带下划线的小写字母

② 若是他们实现一个协议,那么通常使用lib为后缀,例如:import smtplib,import os,import sys

(5) 关于参数

① 不要用断言实现静态类型的检测,断言可以用于检查参数

② 不要滥用*args和**kwargs。会破坏函数的健壮性,会使标签名变得模糊,而且代码尝尝开始在不应该的地方构建小的参数解析器

(6) 其他

① 使用has或者is前缀命名布尔元素。is_connect=True

② 用复数形式命名序列。numbers=[‘user_1’, ‘user_2’]

③ 用显示名称命名字典。person_address={‘user_1’: ‘10 road WD’, ‘user_2’: ‘20 street huafu’}

④ 避免通用名称。诸如list,dict,sequence或者element之类的

⑤ 避免现有名称。诸如os,sys这种系统已经存在的名称应该避免

(7) 一些数字

① 一行列数:PEP8规定为79列,不要超过满屏时编辑器的显示列数

② 一个函数:不要超过30行代码,即可显示在一个屏幕类

③ 一个类:不要超过过200行代码,不要有超过10个方法。

④ 一个模块:不要超过500行

(8) 验证脚本

① 可以安装一个pep8脚本用于验证你的代码风格是否符合pep8

7,linux基础和git

1,linux区分一个文件还是文件夹:

ls -F:文件后是 * 文件夹后是 /

2,日志以什么格式,存放在哪儿

日志以文本可以存储在/var/log目录下后缀名为.log

3,linux查看某个服务的端口:netstat -anp | grep service_name

4,ubuntu设置开机自启动一个程序

① 直接修改/etc/re0.d~/etc/rc6.d和/ect/rcS.d文件夹的内容,S开头的表示启动,K开头的表示不启动

5,linux中find和grep的区别

① grep是一种强大的文本搜索工具,它能使用正则表达示搜索文本,并把匹配的行打印出来,Global Regular Expression Print,表示全局正则表达示版本,他的使用权限是所有用户。

② linux下的find:

1) 功能:在目录结构中搜索文件,并执行指定的操作,此命令提供了相当多的查找条件,功能很强大。

2) 语法:find其实目录寻找条件搜索

3) 说明:find命令从指定的起始目录开始,递归的搜索器各个子目录,查找满足寻找条件的文件并对之采取相关的操作

4) 简单的说,grep是查找匹配条件的行,find是搜索匹配条件的文件

6,linux重定向命令:

① 重定向>:linux允许将命令之I型那个结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中,如ls > test.txt(如果文件不存在则创建,存在则覆盖)

② 重定向>>:这个是将输出内容追加到目标文件中。如果文件不存在,创建文件,存在则追加到那个文件的末尾,该文件中的缘由内容不受影响

7,软链接和硬链接的区别

软链接类似windows的快捷方式,当删除源文件时,那么软链接也失效了。硬链接可以理解为源文件的一个别名,多个别名所代表的是同一个文件。当rm一个文件时,那么此文件的硬链接数减1,当硬链接数为0时,文件被删除

8,10个常用的linux命令

① pwd:显示工作路径

② ls:查看目录中文件

③ cd /home :进入’/home’目录

④ cd .. 返回上一级目录

⑤ cd ../.. 返回上两级目录

⑥ mkdir dir1 创建一个叫做dir1的目录

⑦ rm -f file1 删除一个叫做file1的文件,-f忽略不存在的文件,不给提示

⑧ rmdir dir1 删除一个叫做dir1的目录

⑨ groupadd group_name 创建一个新用户组

⑩ groupdel group_name 删除一个用户组

⑪ tar -cvf archive.tar file1 创建一个非压缩的tarball

⑫ tar -cvf archive.tar file1 file2 dir1 创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件

⑬ tar -tf archive.tar 显示一个包中的内容

⑭ tar -xvf archive.tar 释放一个包

⑮ tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp 目录下

⑯ tar -cvfj archive.tar.bz2 dir1 创建一个 bzip2 格式的压缩包

⑰ tar -xvfj archive.tar.bz2 解压一个 bzip2 格式的压缩包

⑱ tar -cvfz archive.tar.gz dir1 创建一个 gzip 格式的压缩包

⑲ tar -xvfz archive.tar.gz 解压一个 gzip 格式的压缩包

9,linux的关机命令有哪些

reboot 重启

shutdown -r now 重启操作系统,shutdown会给别的用户提示

shutdown -h now 立刻关机,其中now相当于时间为0的状态

shutdown -h 10:25 系统在今天的20.25关机

shutdown -h +10 系统十分钟后自动关机

init 0 关机

init 6 重启

10,git合并文件有冲突如何处理?

① git merge冲突之后,根据提示找到冲突的文件,解决冲突,如果文件有冲突,那么会有类似的标记

② 修改完成之后,执行git add 冲突文件名

③ git commit 注意:没有-m选项,进去类似于vim的操作界面,把conflict相关的行删除掉直接push就可以了,因为刚刚已经执行过相关merge操作了

猜你喜欢

转载自www.cnblogs.com/Sksitigarbha/p/9380306.html