【Python】Python学习----第一模块笔记
1、python是什么?
python是动态解释型的强类型定义语言。
python官方版本的解释器是CPython。该解释器使用C语言开发。
当前主要使用3.x版本的python。
2、第一个python程序
>>> print("Hello World!") Hello World!
Linux下使用./xxx.py执行python执行python程序,在文件开头添加如下代码:
#!/usr/bin/env python
3、字符编码
英文编码系统:ASCII,可以表示255个字符
中文编码系统:GB2312(1980,7445个字符)-->GBK1.0(1995,21886个字符,中文Windows默认编码)-->GB18030(2000)
Unicode:万国码,世界统一的一种编码系统
UTF-8:Unicode的子集,对Unicode进行优化
python 3.x版本的默认编码是UTF-8。如需要定义程序文件的编码在开头添加# -*- coding: 字符编码 -*-语句。
e.g:
# -*- coding: utf-8 -*-
4、变量
a = 1
#声明一个变量,变量名a,值为1
定义变量的规则:
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名:
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
- 变量名最好能让人明了该变量是用来做什么的
5、程序中的注释
# 单行注释 '''多行注释''' or """多行注释"""
6、用户交互
input用来接收用户的输入
e.g:
>>> a = input("请输入:") 请输入:123 >>> print(a) 123
注意:input默认的数据类型为字符型,使用int()可以将其转换为整型
使用type()可以查看变量的数据类型,e.g:
>>> a = "abc" >>> print(type(a)) <class 'str'>
输出小技巧:格式化输出
e.g:
name = "Python" age = 28 print("Name is %s,Age is %s"%(name,age)) #%s字符串 %d 整数 %f 浮点 print("Name is {_name},Age is {_age}".format(_name=name,_age=age))#结果 Name is Python,Age is 28 Name is Python,Age is 28
小技巧:密文输入
需导入getpass模块,使输入的内容不可见
e.g:
>>> getpass.getpass("请输入密码:") 请输入密码: #看不见我看不见我 'assdfghh'
7、if…else语句
if 条件: #如果代码块 else: #否则代码块
if 条件: #如果代码块 elif 条件: #或者代码块 else: #否则代码块
8、while循环
while 条件:代码块
#continue 跳出本次循环,进入下次循环
#break 结束整个循环
python中while可以搭配else使用,e.g:
a = 5 while a<6:if a/2 == 1:breaka += 1 else:print("我就是else!")#结果 我就是else!
9、for循环
e.g:
for i in range(3):print(i)i += 1
#结果
0
1
2for i in range(1,3):print(i)i += 1#结果 1 2
for i in range(1,5,2):print(i)i += 1#结果 1 3
for循环中也有continue和break方法
10、python中的模块
Python有非常丰富和强大的标准库和第三方库
import 模块
#程序开头加上该代码,加载某个模块,接下去就可以使用该模块提供的功能
11、python数据类型
数字:int(整型)、float(浮点)、complex(复数)
布尔值:True 、False
字符串:”Python”
12、python数据运算
算术运算
比较运算
赋值运算
按位运算
逻辑运算
成员运算
身份运算
运算优先级
三元运算
e.g:
name = "Python" if 1>0:name = "Python" else:name = "JAVA" print(name)#结果 Pythonname = "Python" if 1 == 0:name = "Python" else:name = "JAVA" print(name)#结果 JAVA
13、列表
列表是有序的,依靠下标来取值。
>>> name = ["Python","JAVA","C++"] #定义一个列表>>> name[0] 'Python' >>> name[1] 'JAVA' >>> name[-1] 'C++' >>> name[-2] 'JAVA' #通过列表的下标来取值,下标从0开始,负数下标从列表的最后一个开始计算,从-1开始
切片
>>> name = ["Python","JAVA","C++","C","C#"] >>> name[0:2] ['Python', 'JAVA'] #列表的切片,从下标0取到下标1(结束的位置不包括) >>> name[:2] ['Python', 'JAVA'] #下标为0时可以不写#注意负数下标 >>> name[-3:] ['C++', 'C', 'C#'] >>> name[-3:-1] ['C++', 'C'] #使用负数下标切片时,仍然从右到左计算,下标-1不写时,取到-1下标的值,写的时候则不包括-1下标的值>>> name[0:-1:2] ['Python', 'C++'] >>> name[::2] ['Python', 'C++', 'C#'] #同上的负数下标,注意区别,第三个值为步长
追加
>>> name.append("Perl") >>> name ['Python', 'JAVA', 'C++', 'C', 'C#', 'Perl']
插入新值
>>> name.insert(2,"Ruby") >>> name ['Python', 'JAVA', 'Ruby', 'C++', 'C', 'C#', 'Perl'] >>> name.insert(-1,"Lisp") >>> name ['Python', 'JAVA', 'Ruby', 'C++', 'C', 'C#', 'Lisp', 'Perl'] #将新值插入某个值之前
修改
>>> name[2] = "PHP" >>> name ['Python', 'JAVA', 'PHP', 'C++', 'C', 'C#', 'Lisp', 'Perl']
删除
>>> name.remove("PHP") >>> name ['Python', 'JAVA', 'C++', 'C', 'C#', 'Lisp', 'Perl'] >>> del name[5] >>> name ['Python', 'JAVA', 'C++', 'C', 'C#', 'Perl'] >>> name.pop() 'Perl' >>> name ['Python', 'JAVA', 'C++', 'C', 'C#'] >>> name.pop(3) 'C' #pop不加下标时默认删除最后一个值,pop可以返回被删除的值 >>> name ['Python', 'JAVA', 'C++', 'C#']
其他的一些方法
>>> name.index("JAVA") 1 #返回值的下标>>> name.count("C++") 1 #计数>>> name ['Python', 'JAVA', 'C++', 'C#'] >>> name.reverse() >>> name ['C#', 'C++', 'JAVA', 'Python'] #翻转整个列表>>> name ['Python', 'JAVA', 'C++', 'C#'] >>> name.sort() >>> name ['C#', 'C++', 'JAVA', 'Python'] #列表的排序>>> a = ["a","b","c"] >>> name.extend(a) >>> name ['C#', 'C++', 'JAVA', 'Python', 'a', 'b', 'c'] #合并两个列表>>> a.clear() >>> a [] #清除整个列表的值>>> name_copy = name.copy() >>> name_copy ['C#', 'C++', 'JAVA', 'Python', 'a', 'b', 'c'] #复制列表
列表的嵌套
>>> name = ["Python",[1,2,3],"JAVA","C++"] >>> name ['Python', [1, 2, 3], 'JAVA', 'C++'] >>> name[1][2] 3
列表的循环
name = ["Python","JAVA","C++"] for i in name:print(i)#结果 Python JAVA C++
小技巧
name = ["Python","JAVA","C++"] for index,item in enumerate(name):print(index,item)#结果 0 Python 1 JAVA 2 C++
#同时循环列表的下标及值
14、元组
元组是不可修改的列表,也叫只读列表
>>> name = ("Python","JAVA","C++") >>> name ('Python', 'JAVA', 'C++') #创建一个元组
元组只有count与index
>>> name.count("C++") 1 >>> name.index("C++") 2
list(),将元组转换为一个列表
>>> a = list(name) >>> a ['Python', 'JAVA', 'C++']
小技巧,无关元组
\033[31,32;1m%s\033[0m,对%s着色
15、字符串的常用操作
字符串可以使用下标和切片操作。
.upper()/lower() #返回一个新字符串,其中原字符串的所有字母都被相应地转换为大写或小写。 .startswith()/.endswith() #返回 True, 如果它们所调用的字符串以该方法传入的字符串开始或结束。 >>> a = "a:b:c:d:e:f" >>> a.split(":") ['a', 'b', 'c', 'd', 'e', 'f'] a.strip() #删除字符串两边的空白字符(空格、制表符和换行符) a.rstrip() #删除字符串右边的空白字符(空格、制表符和换行符) a.lstrip() #删除字符串左边的空白字符(空格、制表符和换行符)
>>> a = "{'a':'b','c':'d'}" >>> type(a) <class 'str'> >>> b = eval(a) >>> b {'a': 'b', 'c': 'd'} >>> type(b) <class 'dict'> #将格式化的字符串转换成字典,同理可以转换列表跟元组
name = "Python" name.capitalize() #首字母大写 name.casefold() #大写全部变小写 name.ljust(50,"-") #输出'Python---------------------------' name.center(50,"-") #输出 '---------------------Python----------------------' name..rjust(50,"-") #输出'--------------------Python' name.count('t') #统计t出现次数 name.encode() #将字符串编码成bytes格式 name.endswith("n") #判断字符串是否以n结尾"Pyt\thon".expandtabs(10) #输出'Pyt hon', 将\t转换成多长的空格 name.find('y') #查找y,找到返回其索引, 找不到返回-1 name.index('y') #返回y所在字符串的索引 '9aA'.isalnum() #判断是否是字母和数字 '9'.isdigit() #判断是否整数 name.isnumeric #方法检测字符串是否只由数字组成。这种方法是只针对unicode对象。 name.isprintable #判断是否为可打印字符串 name.isspace #判断是否为空格 name.istitle #判断是否首字母大写,其他字母小写 name.islower()/isupper() #判断是否为小写/大写 >>> "|".join(['Python', 'JAVA', 'C++']) 'Python|JAVA|C++' >>> a = "a:b:c:d:e:f" >>> a.partition(":") ('a', ':', 'b:c:d:e:f') .replace(old,new,x) #将第x个字符替换 .swapcase #大小写互换 .zfill() #返回指定长度的字符串,原字符串右对齐,前面填充0 .isidentifier() #检测一段字符串可否被当作标志符,即是否符合变量命名规则
16、字典
字典:键-值(key - value),key唯一,无序
>>> a = {"福建":"福州","广东":"广州","江西":"南昌"} >>> a {'福建': '福州', '广东': '广州', '江西': '南昌'} #创建一个字典>>> a["广西"] = "南宁" >>> a {'福建': '福州', '广东': '广州', '江西': '南昌', '广西': '南宁'} #增加>>> a["广西"] = "广西" >>> a {'福建': '福州', '广东': '广州', '江西': '南昌', '广西': '广西'} #修改>>> a.pop("广西") '广西' >>> a {'福建': '福州', '广东': '广州', '江西': '南昌'} >>> del a["江西"] >>> a {'福建': '福州', '广东': '广州'} #删除>>> a = {"福建":"福州","广东":"广州","江西":"南昌"} >>> a.popitem() ('江西', '南昌') #随机删除>>> a = {"福建":"福州","广东":"广州","江西":"南昌"} >>> "福建" in a True #查找>>> a.get("福建") '福州' >>> a["福建"] '福州' #取某个键的值,使用get方法如果键不存在则返回None,直接取键不存在则报错>>> a.values() dict_values(['福州', '广州', '南昌']) >>> a.keys() dict_keys(['福建', '广东', '江西']) >>> a.items() dict_items([('福建', '福州'), ('广东', '广州'), ('江西', '南昌')]) >>> b = list(a.items()) >>> b [('福建', '福州'), ('广东', '广州'), ('江西', '南昌')] #返回值可以用于循环>>> a.setdefault("福建") '福州' >>> a.setdefault("福建","南宁") '福州' >>> a.setdefault("广西","南宁") '南宁' >>> a {'福建': '福州', '广东': '广州', '江西': '南昌', '广西': '南宁'} #不存在则增加,存在则返回该键的值>>> b {1, 2, 3} >>> b = {1:2,3:4,5:6} >>> a.update(b) >>> a {'福建': '福州', '广东': '广州', '江西': '南昌', '广西': '南宁', 1: 2, 3: 4, 5: 6} #合并两个字典>>> a = dict.fromkeys([1,2,3],"abc") >>> a {1: 'abc', 2: 'abc', 3: 'abc'}a = {"福建":"福州","广东":"广州","江西":"南昌"} for i in a:print(i,a[i]) #字典的循环,结果 福建 福州 广东 广州 江西 南昌
17、集合
集合是一个无序的,不重复的数据组合。作用:
- 去重,把列表变成集合,自动去重
- 关系测试,取交集、并集等关系
s = set([3,5,9,10]) #创建一个数值集合 t = set("Hello") #创建一个唯一字符的集合 t.add('x') # 添加一项 s.update([10,37,42]) # 添加多项 t.remove('H') # 删除 len(s) #长度
s.copy() #返回 set “s”的一个浅复制 x in s #测试 x 是否是 s 的成员 x not in s #测试 x 是否不是 s 的成员
s.issubset(t) s <= t #测试是否 s 中的每一个元素都在 t 中
s.issuperset(t) s >= t #测试是否 t 中的每一个元素都在 s 中
s.union(t) s | t #返回一个新的 set 包含 s 和 t 中的每一个元素
s.intersection(t) s & t #返回一个新的 set 包含 s 和 t 中的公共元素
s.difference(t) s - t #返回一个新的 set 包含 s 中有但是 t 中没有的元素
s.symmetric_difference(t) s ^ t #返回一个新的 set 包含 s 和 t 中不重复的元素
18、文件操作
文件的常用操作
f = open("文件名","模式") #打开文件,模式有以下几种: r 只读模式(默认) w 只写模式(文件不存在则建立,文件存在则覆盖) a 追加模式(文件不存在则建立,文件存在则追加) r+ 读写模式(可读可写可追加) w+ 写读模式 a+ 追加读模式 rb、wb、ab 处理二进制文件 U 将\r \n \r\n自动转换成\n(与r或r+模式同时使用)f.read() #读文件 f.readline() #读一行 f.readlines() #将文件每一行读如一个列表f.write() #将内容写入文件f.close() #关闭文件f.tell() #返回指针位置,按文件中字符的个数计算 f.seek() #回到某个指针位置f.encoding() #返回文件所使用的编码
文件的其他一些操作
f.readable() #判断文件是否可读 f.writeable() #判断文件是否可写 f.closed() #判断文件是否关闭 f.seekable() #判断是否可以移动指针 f.name() #返回文件名 f.isatty() #如果文件连接到一个终端设备返回 True,否则返回 False f.flush() #将缓存内容写入硬盘 f.truncate() #从头开始截断文件
for line in f:print(line) #将文件一行行读入内存,一次只在内存中保存一行with open("文件名","模式") as f: #为防止打开文件之后忘记关闭,使用该方法在with代码块执行完毕之后自动关闭释放文件资源with open("文件名","模式") as f1,open("文件名","模式") as f2: #支持对多个文件进行操作
19、字符的编码与转码
encode:编码 decode:转码
GBK-->UTF-8:GBK--decode-->Unicode--encode-->UTF-8
UTF-8-->GBK:UTF-8--decode-->Unicode--encode—>GBK
两个不同编码相互转换都需要经过Unicode。
.decode(原编码)
.encode(转换后编码)
python 3.x默认为UTF-8编码。
在python 3.x中encode,在转码的同时还会把string变成bytes类型,decode在解码的同时还会把bytes变回string。
20、函数
使用函数的意义:
- 减少重复的代码
- 保持一致性,使代码更容易修改
- 使程序更容易扩展
def 函数名(形参):'''文档描述'''代码块return #返回执行结果,可返回多个值,默认返回None #定义一个函数
位置参数,关键字参数,默认参数,e.g:
def test(x,y):print(x)print(y)return test(1,2) #位置参数,将函数所获得的参数按照一一对应的位置传入,输出结果为 1 2def test(x,y):print(x)print(y)return test(x=1,y=2) #关键字参数,按照关键字将值传入,输出结果为 1 2def test(x,y):print(x)print(y)return test(1,y=2) #位置参数与关键字参数一起使用,注意:关键字参数不能放在位置参数之前,输出结果为 1 2def test(x,y,z=3):print(x)print(y)print(z)return test(1,y=2) #默认参数,直接在定义函数的时候赋值,可以在调用函数的时候修改,输出结果为
1
2
3
非固定参数
def test(*args):print(args)return test(1,2) test(1,2,3) test(*[1,2,3,4]) #非固定参数,可以传入不同个数的参数,只能接受位置参数,以元组的方式输出,结果 (1, 2) (1, 2, 3) (1, 2, 3, 4)def test(**args):print(args)return test(x=1,y=2) test(x=1,y=2,z=3) #非固定参数,以字典的方式输出,只接受关键字参数,结果 {'x': 1, 'y': 2} {'x': 1, 'y': 2, 'z': 3}
21、作用域、局部与全局变量
在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时,在定义局部变量的子程序内,局部变量起作用,在其它地方全局变量起作用
22、递归与高阶函数
递归
一个函数在内部调用自身,该函数即为递归函数
特性:
- 必须有一个明确的结束条件
- 每次进入更深一层递归时,问题规模相比上次递归都应该有所减少
- 递归效率不高,递归层次过多会导致栈溢出
高阶函数
变量可以指向函数,函数的参数能够接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数称为高阶函数。e.g:
def add(x,y,f):return f(x)+f(y) res = add(3,-6,abs) print(res) #结果 9
转载于:https://www.cnblogs.com/yanglang/p/7595544.html
【Python】Python学习----第一模块笔记相关推荐
- python函数和模块有什么关键特性_Python学习----第一模块笔记(Python基础知识)...
1.python是什么? python是动态解释型的强类型定义语言. python官方版本的解释器是CPython.该解释器使用C语言开发. 当前主要使用3.x版本的python. 2.第一个pyth ...
- python学习第一模块练习
#!/usr/bin/python# -*- coding:utf-8 -*- ### 第一套题# # 1. 分别解释"=","==","+=&quo ...
- python中的log模块笔记
日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四大组件记录日志 配置logging的几种方式 向日志输出中添 ...
- Python入门学习(第一天)
入门学习第一步: 1.安装python https://www.python.org/downloads/ 2.下载编辑器 推荐PyCharm Edu 3.打开编辑器新建一个python文件 4. 在 ...
- 决战Python之巅——第一模块总结
前言 本篇将对第一模块中的知识点做一个小总结. 知识总结 1.编程语言 编程语言分为三大类: 1.机器语言 2.汇编语言 3.高级语言 其中,机器语言与汇编语言是最底层语言,运行速度快,但开发效率低: ...
- python学习 第一模块习题总结
part1 习题 简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型? Pyhton 单行注释和多行注释分别用什么? 布尔值分别有什么? 如何查看变量在内存中的地址? ...
- python编程学习——第一周
第一周 python学习笔记和做的一些习题 (python编程快速上手--让繁琐工作自动化) 第一章节 python基础 一些常用的数学操作符总结(优先级从高到低): 操作符 操作 ** 指数 % 取 ...
- python爬虫学习第一章
<!DOCTYPE html> python爬虫第一章 python网络爬虫的学习 什么是网络爬虫 按照特定需求,从互联网中搜索有用信息网页进行过滤,就叫网络爬虫. 网络爬虫算法 当浏览信 ...
- Lumerical Python API学习之补充笔记
一.笔记1 1.1.关于SYS 在导入之前添加 Python代码解释 当我们导入一个模块时: import xxx ,默认情况下python解释器会搜索当前目录.已安装的内置模块和第三方模块. 搜索路 ...
最新文章
- NIPS改名被否,而在改名分歧之外我们能做的还有很多
- Powershell 音乐播放
- 今年天津分数线高考成绩查询2021年,2021年天津高考分数线预测(2021年天津高考录取分数线)2021年天津高考分数会降低吗...
- HTML5的Canvas画图模拟太阳系运转
- 前端学习(1046):todolist删除数据1
- 卡巴斯基安全浏览器_一年三番五次修,卡巴斯基为何依然无法完美修复杀毒软件中的这些洞 (技术详情)?...
- 程序设计基础(C语言)
- 第二次提交文件 merge上次版本
- python期末复习卷_【期末复习卷A】六年级科学上册期末复习试题
- 适用于IE浏览器及非IE浏览器的xmlhttp脚本
- (安卓)一键锁屏 ---亲测!
- 阶段3 2.Spring_08.面向切面编程 AOP_8 spring中的环绕通知
- NoSQL 数据库比较
- 国外近年智慧出行项目清单
- smalltalk五个特性
- 爬虫获取的数据和在自己浏览器看到的不一样
- dedecms织梦系统安装步骤
- linux网卡变成fe80,linux的ifconfig命令出现inet6fe80的解决方案.docx
- b站coderwhy老师_购物首页开发
- 计算机网络面试《葵花宝典》