Python教程-廖雪峰的官方网站-学习记录

本文介绍了Python的命令行使用,包括如何进入交互模式和运行脚本。讨论了数据类型如整数、字符串的表示,以及字符串编码。还涉及了list、tuple、dict和set的特性,函数参数,列表生成式,生成器和迭代器的概念。此外,讲解了模块的__name__机制,文件的读写操作,以及操作系统路径处理。最后提到了argparse模块在命令行参数解析中的应用。
摘要由CSDN通过智能技术生成

1 第一个python程序
打开cmd命令提示符窗口,就进入了命令行模式,命令行模式的提示符类似于 C:\Users\LFJ>
输入python,看到提示符">>>"就说明已经进入了python的交互模式,输入exit() 就可以退出交互模式,回到命令行模式
2 使用文本编辑器
win系统不能直接运行xxx.py文件,mac os 和linux系统上可以,如在终端中直接运行xxx.py文件:./xxx.py
win中可以在命令行模式下执行 python xxx.py,或者编写shell脚本,shell脚本开头第一行是:#!/usr/bin/env python3
然后在git中进入shell脚本所在目录,通过chmod a+x run.sh 给予shell脚本执行权限,然后运行sh脚本:bash run.sh 或者 sh run.sh
3 数据类型和变量
对于整数,如果有很多0,可以用下划线'_'将数字分隔,十六进制也可以采用这种方法,比如 1_000_000, 0xa1b2_c3d4
如果打印输出的字符串里包含单引号和双引号,可以添加转义字符'\'来打印出想要的字符;
如果字符串里原本是什么符号就让它输出什么符号,可以使用r'xx',让字符串不发生转义;
字符串换行输出,可以使用'''xxx''',比如
print(r'''ln1\n
ln2
ln3''')
上面使用了r'''xxx'''使得引号内的字符串不发生转义,并输出多行内容。此外,在python交互模式中输入多行内容,换行时提示符由>>>变为...
python中的数据类型:整数、浮点数、字符串、布尔值、空值、列表、元组、字典、集合
4 字符串和编码
ASCII编码是1个字节,而Unicode编码通常是2个字节(如果要用到非常偏僻的字符,就需要4个字节)
UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。
现在计算机系统通用的字符编码工作方式:在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
python3中的str数据类型,在内存中采用Unicode编码方式,通常一个字符对应两个字节,要在网络上传输或者保存到磁盘,需要把str数据类型转换为bytes数据类型,即从Unicode编码转换为UTF-8编码。(UTF-8是兼容ASCII编码的,英文的一个字符对应一个字节,中文的一个字符对应三个字节)
字符串中包含%字符的情况,用 %% 来转义
5 使用list和tuple;使用dict和set
list and tuple是有顺序的集合,list可变tuple不可变
dict, set 是无序的(dict内部的顺序和key放入时的顺序无关)
dict的key必须是不可变对象,如整数、字符串,而列表是可变对象,不能作为key。最常用的key是字符串。
6 函数的参数
函数在定义默认参数时,默认参数必须是不可变对象,如int, str, None(默认参数指向不可变对象)
在Python中定义函数,参数定义的顺序为:必选参数、默认参数、可变参数、命名关键字参数、关键字参数
7 列表生成式
在一个列表生成式中,for前面的if ... else是表达式,for循环遍历列表中每一个元素x,每一个x根据if...else表达式计算出一个值;
而for后面的if是过滤条件,不能带else。for循环遍历列表中每一个元素x,当元素x满足if判断条件时,才计算出一个值
8 generator and Iterator (生成器对象 和 迭代器对象)
python中的可以作用于for循环的对象统称为 Iterable(可迭代对象),可以分为两类:
一类是集合数据类型,如list、tuple、dict、set、str等;
一类是generator,包括生成器和生成器函数
凡是可作用于next()函数的可迭代对象都是迭代器对象(Iterator),如生成器对象;
list、dict、str等虽然是Iterable,但不是Iterator,可以使用iter()函数把他们变成Iterator
9 使用模块
编写一个hello.py
def test():
    pass

if __name__=='__man__':
    test()
当我们在命令行中运行hello.py 或者直接在代码编辑器中运行hello.py时,Python解释器把一个特殊变量__name__置为__main__,此时if判断为真,开始执行if条件判断之后的代码部分;而如果在其他地方导入该hello模块时,if判断将失败,不会执行if条件判断之后的代码,因此,这种 if __name__=='__man__': 语句常用来测试模块中我们编写的函数的功能。
10 文件读写
文件的写入调用open()方法时,需要用到以下三个参数:
“x” - 创建 - 将创建一个文件,如果文件存在则返回错误
“a” - 追加 - 如果指定的文件不存在,将创建一个文件
“w” - 写入 - 如果指定的文件不存在,将创建一个文件
11 操作文件和目录
在windows平台上谨慎使用os.path.join() 这个方法!!!
os.path.join() 在Linux平台返回这样的路径字符串:'path1/path2'

而在Windows平台上返回的是:'path1\\path2' 

调试代码的时候一定要注意这个坑!
12 常用内置模块--collections
我们可以用collections模块中的ChainMap class实现参数的优先级查找,即先查命令行参数,再查环境变量,如果还没有找到,最后查找默认参数。
13 常用内置模块--argparse
Python内置的sys.argv保存了完整的参数列表,我们可以从中解析出需要的参数。比如在命令行模式中运行一个xxx.py文件,如:python xxx.py
那么sys.argv这个list对象中的第一个元素是 'xxx.py'
为了简化命令行参数的解析工作,可以使用argparse来解析参数。只需定义各个参数类型(如位置参数和关键字参数),当输入参数全部有效时,才会返回一个NameSpace对象,获取对应的参数就把参数名当作属性获取,非常方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值