Python——入门到精通

 

目 录

1 Python规范

2 基础语法

    集合,切片,字符串,基本数据处理,输入输出,自定义函数,控制流,正则表达式

 3 深入学习

  网络编程,多线程,sys,optparse


1 Python规范

1)缩进

Python对代码缩进是硬性要求,严格使用缩进来体现代码的逻辑从属关系。一般以4个空格(或一个TAB)为一个缩进单位,并且相同级别的代码块应具有相同的缩进量。

2)续行

行尾使用续行符“\”表示下一行代码仍属于本条语句,或者使用圆括号把多行代码括起来表示是一条语句

3)注释

有两种常用的注释形式:#和三引号。井号#用于单行注释;三引号""" """常用于大段说明性文本的注释,也可以用于界定包含换行符的长字符串。

2 基础语法

2.1 集合

1)列表:https://www.w3school.com.cn/python/python_lists.asp

  • 所有元素放在一对方括号中,相邻元素之间使用逗号分隔,如: [12, 45, 'hello']
  • 存放多个数据的有序容器【添加顺序与显示顺序一致】。
  • 为数据设置对应的编号称为索引、下标【从0开始】。
  • 可以通过索引和下标操作容器中的数据。
  • 同一个列表中元素的数据类型可以各不相同
 列表推导式
        【将要存放于列表中的元素    元素的来源   (对元素的筛选)】

list =[i for i in range(1,100) if i % 3 == 0 and i % 10 ==3]

2)元组:https://www.w3school.com.cn/python/python_tuples.asp

  • 可以通过把若干元素放在一对圆括号中创建元组,如果只有一个元素的话则需要多加一个逗号,例如(3,)
    • 可以使用tuple()函数把列表、字典、集合、字符串以及range对象、map对象、zip对象或其他类似对象转换为元组。
    • 元组是不可变的,不能直接修改元组中元素的值,也不能为元组增加或删除元素。

3)字典:https://www.w3school.com.cn/python/python_dictionaries.asp

  • 存放的是具有映射关系的数据,数据成对出现,如:source_dict = {'语文':77,'数学': 78,'政治':77}
  • 成对出现的数据称为键值对key:value
  • key称为键,要求:唯一的,数据不允许发生变化
  • value = source_dict.get('语文')    ,  value1 = source_dict.get('历史',0)#存在则覆盖,不存在则创建
for ele in source_dict:
    print(ele)  #拿到的是键
for v in source_dict.values():
    print(v)
for item in source_dict.items():
    print(item) #输出的是键值对,元组格式(,)
for k,v in source_dict.items():
    print(k,v)

4)集合:https://www.w3school.com.cn/python/python_sets.asp

  • Python集合是无序可变的容器对象,放在一对花括号中,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一的,不允许重复,如:{"apple", "banana", "cherry"}
  • 集合中只能包含数字、字符串、元组等不可变类型的数据,而不能包含列表、字典、集合等可变类型的数据,包含列表等可变类型数据的元组也不能作为集合的元素。
  • 集合中的元素是无序的,元素存储顺序和添加顺序并不一致。
  • 集合不支持使用下标直接访问特定位置上的元素,也不支持使用random中的choice()函数从集合中随机选取元素,但支持使用random模块中的sample()函数随机选取部分元素。

2.2 切片

是用来获取列表、元组、字符串等有序序列中部分元素的一种语法。在形式上,切片使用 2个冒号分隔的3个数字 来完成。

[start:end:step]

其中第一个数字start表示切片开始位置,默认为0

第二个数字end表示切片截止(但不包含)位置(默认为列表长度);

第三个数字step表示切片的步长(默认为1),省略步长时还可以同时省略最后一个冒号。当step负整数时,表示反向切片,这时start应该在end的右侧。

2.3 字符串

Python 中的字符串是表示 unicode 字符的字节数组。但是,Python 没有字符数据类型,单个字符就是长度为 1 的字符串。

字符串属于不可变对象,所有方法都是返回处理后的字符串或字节串,不对原字符串进行任何修改。

创建:单引号=双引号;三引号(多行文本)

s = 'hello nice'
#想把第一个字符改为H
new_s = 'H' + s[1:]
print(new_s)


或者:
n_nums = map(str,nums)
print("-".join(n_nums))


map(函数,容器)
    将容器中的元素通过指定函数的作用变化成对应的结果
    函数有自定义函数和内置函数(python提供的)
    现在需要一个函数的功能是把数据变成字符串这个函数,系统提供了str(数据)

常用方法

 输出格式:

字符串输出格式
        占位符
           %s  ---填充任意类型数据
           %d  ---填充整形数据
           %0nd ---按照n位数格式化数据
           %f  ---填充浮点型数据
           %.nf    ---保留n位小数
urls = 'aaa%02d'
for i in range(8,12):
    print(urls % i)

使用format:

格式化字符串的函数 str.format(),基本语法是通过 {} 和 : 来代替以前的 % 。

1.填充
      key填充: print("网站名:{name}, 地址 {url}".format(name=str1, url=str2))
      位置填充:print("网站名:{0}, 地址 {1}".format(str1,str2))
      列表填充:print('{names[0]} , {names[1]}'.format(names=list))
               print('{0[0]} , {0[1]}'.format(list)) 


2.数字格式化
    >>> print("{:.2f}".format(3.1415926))
    >>> 3.14
    {:.2f}   保留小数点后两位 
    {:+.2f}  带符号保留小数点后两位
    {:.0f} 	 不带小数
    {:0>2d}  数字补零 (填充左边, 宽度为2)
    {:x<4d}  数字补x (填充右边, 宽度为4)
    {:,} 	 以逗号分隔的数字格式
    {:.2%} 	 百分比格式
    {:.2e}   指数记法
    {:>10d}  右对齐 (默认, 宽度为10)
    {:<10d}  左对齐 (宽度为10)
    {:^10d}  中间对齐 (宽度为10) 

3.时间格式化
now=datetime.now()
print '{:%Y-%m-%d %X}'.format(now)

4.进制转换
    print("{0:,} in hex is: {0:#x}, in oct is {0:#o}".format(5555555))
    #x表示格式化为十六进制数

5.转义{和}符号
    '{{ hello{0}  }}'.format('python’)         
    f = ' hello {0} '.format
    f('python’)       

2.4 数据类型转换

(1)int()、float()、complex()

(2)bin()、oct()、hex()    把整数转换为二进制,八进制,十六进制

(3)ord()、chr()、str()    返回字符的ASCII码,

(4)list()、tuple()、dict()、set()

(5)eval()

2.5 输入输出

(1)内置函数input

input()用来接收用户的键盘输入,不论用户输入什么内容,input()一律作为字符串对待,

(2)内置函数print

print()用于以指定的格式输出信息,语法格式为:
print('-'*50) #重复50次

2.6 自定义函数

lambda 函数是一种小的匿名函数。lambda 函数可接受任意数量的参数,但只能有一个表达式。

表达式————lambda arguments : expression    
     实例————x = lambda x: x+2

def name(data):return data
必选参数 (data)
默认参数 (data,p=2)
可变参数 (*args)
关键字参数 (**args)

补充:模块

每一个后缀为.py的文件都被视作一个Python模块,可以被其它Python程序调用(import)。

每个Python脚本在运行时都有一个__ name__ 属性, 通过它可以识别程序的使用方式,即程序是在作为模块被导入,还是在独立运行。

           如果是在作为模块被导入,那么__name__ 属性的值就被自动设置为模块名;

           如果是在独立运行,那么__ name__ 属性的值会被自动设置为字符串“_main_“

 2.7 控制流

if

if else
if elif else

for   用来遍历容器

for i in list
for i in range(a,b)
[i++ for i in list if i >2]

 2.8 正则表达式

re.match(r'匹配符',str)

          匹配符 
            .       任意字符
            [0-9]  匹配任意一个数字
            [a-z]  匹配一个字母
            ()      指定字符
            (qq.com | 163.com)  找是否有小括号里的内容的
            ?  出现最多1次
            +   出现最少一次
            *   出现任意次
            {n,m}   n=<前面字符串匹配位数<=m
            {n}     匹配n次
            *和+ 贪婪匹配    能匹配多少就匹配多少
            *?和+?非贪婪匹配  尽可能的少匹配
            ^   开始
            $   结束

2.9 random

random.choice() #指定容器中获取一个元素
random.randint()#指定的整数区间去一个(a,b】
random.sample()#不重复

2.10 异常处理

try:
except Exception as e:
     print("异常时执行")
else:
     print("正确时执行")

 3 深入学习

3.1 网路编程

Import socket

socket.setdefaulttimeout(2)
S = Socket.socket()
s.connect((“192.168.1.12”,21))
ans = s.recv(1024)
print (ans)

Python 提供了两个级别访问的网络服务:

    低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。

    高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。

Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求:

格式:socket.socket([family[, type[, protocal]]])

参数

    family: 套接字家族可以使AF_UNIX或者AF_INET

    type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM或SOCK_DGRAM

    protocol: 一般不填默认为0

函数

https://img-blog.csdnimg.cn/20190606160608875.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hsc2oyMjg=,size_16,color_FFFFFF,t_70

3.2 多线程

当进程被创建时,操作系统会自动为之创建一个线程,称为主线程,主线程再根据需要动态创建其它子线程。通过threading模块中的Thread()类可以创建和管理线程对象。   

 import threading

threading.Thread(target=None, name=None,  args=())

参数

    target 是函数名字,需要调用的函数。

    name 设置线程名字。

    args 函数需要的参数,以元祖( tuple)的形式传入

函数

    run(): 用以表示线程活动的方法。

    start():启动线程活动。

    join(): 等待至线程中止。

    isAlive(): 返回线程是否活动的。

    getName(): 返回线程名。

    setName(): 设置线程名。

3.3 sys

sys.argv变量是一个字符串的列表。

当我们执行"python using_sys.py a b c "的时候,后面跟着的内容被作为参数传递给程序,Python为我们把它存储在sys.argv变量中。

(1)参数获取

脚本文件‘using_sys.py'是sys.argv[0]

                                 'a'是sys.argv[1]

                                'b'是sys.argv[2]

                                'c'是sys.argv[3]

sys.argv是输出所有参数

sys.startswith() 是用来判断一个对象是以什么开头的

(2)sys.exit()退出程序。

sys.exit()会引发一个异常:SystemExit,如果这个异常没有被捕获,那么python解释器将会退出。如果有捕获此异常的代码,那么这些代码还是会执行。捕获这个异常可以做一些额外的清理工作。

注意,os._exit()会直接将python程序终止,之后的所有代码都不会继续执行。

sys.exit(1), 退出当前程序,并返回SystemExit异常。0为正常退出,其他数值(1-127)为不正常,可抛异常事件供捕获。

sys. exit(0),正常退出。

sys. exit(“程序退出”),显示一段提示信息退出。

3.4 optparse

from optparse import OptionParser

usage="python  -f <target file> -p/-P <target ports>"  #用于显示帮助信息
parser=OptionParser(usage)  #创建对象实例
parser.add_option('-f','--file',type='string',dest='filename')   ##需要的命令行参数
parser.add_option('-P','-p',type='string',help='target ports' ,default="20,21",dest='Ports')  ## -p/-P 都可以
(options,args)=parser.parse_args()

print(options.filename)
print(options.Ports)

利用add_ option()方法添加选项。-f和--file分别表示长短选项名,长选项可以省略。type指定了 参数类型,默认为string, dest指定将参数赋值给哪个变量。
利用parse_ args()方法来获取定义的选项和参数,parse_ args()方法返回两个值, 其中options对象保存了所传递进来的参数值。
通过options. filename和options.address的方式调用参数值。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值