Python入门基础知识总结
来源:互联网 发布:华理网络教育登录平台 编辑:程序博客网 时间:2024/05/26 05:52
一、介绍
课程来源:慕课网 python入门
读完python入门课程和后续课程后,觉得比较混乱,想整理一下自己的知识点。如果对你有帮助那再好不过。前面会给出代码,如果觉得看的懂可以直接跳过我给的解释,如果觉得有疑问,后面的我会给出详细的解释。
@python是动态语言,你会发现定义一个变量可以任意,甚至随便赋值都可以。这和静态语言严格申明变量类型有所不同,下面是一些关于两种语言的摘要,静态语言以Java为例。
静态类型有利于工具做静态分析,有利于性能优化,有利于代码可读性
有些人总是拿完成同样任务所用代码量来做比较,得出python优于java的结论,不得不说这是非常片面的观点。java是有些啰嗦,不过ide能帮忙减少80%以上的键盘敲击,同时静态分析能帮忙解决80%以上的低级错误,代码提示能帮忙减少80%以上的查文档时间,至于强大的重构能力更是python望尘莫及的,所以只要是稍微大的项目,用java很可能比python开发速度更快。越是复杂的项目,使用静态语言可以利用编译器更早的发现和避免问题。这并不是说动态语言并不能用于大型项目,但是在超过一定规模之后,动态语言轻便灵活的优势就会被重构时的overhead给抵消掉。另一个原因是性能上的。同理,也不是动态语言写不出高效的代码,而是你花在优化上的时间会更多,而团队人多了水平难免参差不齐,不如静态语言稳妥。
那静态类型语言的优势究竟是什么呢?我认为就是执行效率非常高。所以但凡需要关注执行性能的地方就得用静态类型语言。其他方面似乎没有什么特别的优势。
@优雅,明确,简单。适合开发系统工具和脚本,网站。代码量最少,开发快,但运行较慢。不适合贴近硬件,游戏适合用C要用到渲染等技术,ios和Android都有自己的语言。
@python2.7版本和3.X版本不兼容,用的早的程序大多是2.7,但是2020后,2.7就不在用了,主要用于维护。所以现在开始学习的可以学3.X。虽然上面那个课程是2.7版本的。
本书把大一点的Python脚本称为程序,简单的Python称为脚本。
@跨平台,几个系统下都能运行。
@Python的优点是具有强大的模块功能。
@Python解释器会将.py文件编译为.pyc字节码文件,再编译为.pyo文件计算机可以识别。
@命名规则:
模块名,就是文件名,用小写加下划线的形式。lower_with_under
类名:Pascal风格,CapWords
Functions: 小驼峰命名,myFirstName
@安装python很简单,到官网下载下一步安装,记住安装路径,一般不要安装到C盘,除非你的C盘很大。可以在DOS窗口里查看
出现这种错误需要修改环境变量,将你的python路径添加进去,
我的电脑–》属性–》高级系统设置–》环境变量–》系统变量Path
记住前面加分号“;”不是冒号。安装的时候提醒过你记住你的安装位置了。
@在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。
@对缩进要求严格,首行不能有空格。
@理解变量在计算机内存中的表示也非常重要。当我们写:a = ‘ABC’时,Python解释器干了两件事情:
1. 在内存中创建了一个’ABC’的字符串;
2. 在内存中创建了一个名为a的变量,并把它指向’ABC’。
@用PDB调试
Import pdb
pdb.set_trace() #相当于运行断点,停在这里,然后可以用p 变量名 ,查看变量。或者用命令c继续运行。IDE最上面有基本调试工具。
list
#@1A = [x for x in range(10)] #或者 A = list(range(10))A2 = [x*x for x in range(10)]B = list('abcdef')C = [x for x in range(1,100,2)] D = [x for x in A if x%2==0] #条件过滤表达式E = [i*100+j*10+k for i in range(1,10) for j in range(0,10) for k in range(1,10) if i==k]A[11] #报错,不能越界A[-1] #倒序访问,输出9A.append(11) #末尾加入数字11A.pop() #末尾删除9A.pop(-2) #删除第二个数字8A.clear() #清空列表A.insert(1,'99') #在第二个位置,插入99A[0],A[-1]=A[-1],A[0] #首尾数字交换
@1初始时A= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
@1初始时B=[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’]
@1初始时C=[从1,到100的奇数]
@1这种写法就是Python特有的列表生成式。利用列表生成式,可以以非常简洁的代码生成 list。
#@2L[:5]L[0:5] #输出[0, 1, 2, 3, 4]L[-5:] #输出[5, 6, 7, 8, 9]L[1:5] #输出[1, 2, 3, 4]L[0:5:2] #输出[0, 2, 4]str1 = 'abcdefg'str[:3] #输出abc,操作通列表相同。
@2列表的切片操作‘开始元素’:‘最后元素’:‘取元素间隔’
tuple
@tuple一旦创建完毕,就不能修改了, 创建tuple和创建list唯一不同之处是用( )替代了[ ]。
#@1 T = tuple(range(10)) #两种方式一样 T = tuple(x for x in range(0,10))
@1输出 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
#@2T1 = (a)T2 = (a,)
@2正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义:
dict
#@1test = {'Alice':'21', 'Bob':'22', 'Clike':'23'}test.keys() #dict_keys(['Alice', 'Bob', 'Clike'])test.values() #dict_values(['21', '22', '23'])test['Bob'] #输出22,找不到报错test.get('Bob') #输出22,找不到返回空,不会报错。len(test) #输出3test.pop('Bob') #输出22,删除这个元素test.clear() #清空字典d1 = {'Daul': 75} #检查test是否有Daul,没有则加入if not 'Paul' in test: test.update(d1)for key in test: #遍历test print key,':',test[key]
@1dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。
由于dict是按 key 查找,所以,在一个dict中,key不能重复。dict的第二个特点就是存储的key-value序对是没有顺序的!这和list不一样
#@2a = [1,'b','b',3,3,3,'d','d','d','d',5,5,5,5,5,'f','f','f','f','f','f',7,7,7,7,7,7,7,'h','h','h','h','h','h','h','h',9,9,9,9,9,9,9,9,9,'j','j','j','j','j','j','j','j','j','j',11,11,11,11,11,11,11,11,11,11,11]b = {} #定义空字典for d in set(a): #去重复的值,set b[a.count(d)] = d #去重后做计数,把数量和值写到字典bfor e in reversed(sorted(b.keys())[-10:]): print e,':',b[e] #排序列表键值并取后10个(数量最大的10个),翻转后打印出数量与值。#遍历sets = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])for x in s: print x[0],':',x[1]s = set([1,2,3])s.add(4) #set添加元素s.remove(3) #删除3,不存在会报错
@2set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。
set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。
str
#@1'hello python'.title() #输出 Hello Python'HELLO PYTHON'.lower() #输出 hello python'hello python'.upper() #输出 HELLO PYTHON'123456'.isdigit() #输出 True'12345 python'.isalnum()#输出 True'abcdef'.isalpha() #输出 True'abcdef'.find('abc') #输出 True'hello python'.split() #输出['hello', 'python'],中间可以为任意空格
@str可以切片,见list
@isinstance(s,basestring)判断一个变量s是不是字符串使用
@istitle(): 判定字符串是否每一个单词有且只有第一个字符是大写。
@ islower():是否全是小写,返回bool
@isupper():是否全是大写,返回bool
@title(): lower(),upper()实现上述功能。
@isdigit(): 判断数字 ;
@alphanumeric: 数字字母混合 isalnum()
@isalphabetic: 按字母顺序的 isalpha()
@find:找不到返回-1 和 in:返回bool判断子串和主串
@切分split()
python中数据类型
#@1str1 = '0xff00'print (eval(str1))
@1输出为65280。计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等eval(str)。将字符串作为表达式输出。
#@2str1 = 'hello python'str2 = "hello python"print (str1 == str2)
@2为真。字符串是以”或”“括起来的任意文本,本身不作任何区分。一样作用。
#@3a = 5 b = 6c = 4if a>b and print("这条语句不执行"): print(True)else: print(False)
@3要解释上述结果,又涉及到 and 和 or 运算的一条重要法则:短路计算。在计算 a >b 时,如果是 False,则根据与运算法则,整个结果必定为 False,因此返回False;如果是 True,则整个计算结果必定取决与 后面的运算,因此返回后面的值。
注释
#@1这是注释'''这是文档注释很长很长'''
@1Python的注释以 # 开头,后面的文字直到行尾都算注释
@1Python中raw字符串与多行字符串,和注释很相似,都是’’’
输出print
#@2print('a','b','c') #a b c
@2print会依次打印每个字符串,遇到逗号“,”会输出一个空格,因此,输出的字符串是这样拼起来的:
函数
#@1for index, num in enumerate(L): print(index,num)
@1一个函数,可以输出索引和值
isinstance(x, str) #判断x是不是字符串
- Python入门基础知识总结
- Python入门基础知识总结
- Python入门基础知识总结
- Python入门:基础知识
- python入门-基础知识
- python入门基础知识
- python 基础知识快速入门
- Python基础知识总结
- python基础知识总结
- python基础知识学习总结
- python基础知识总结1
- Python基础知识总结(1)
- python基础知识小总结
- python 基础知识总结
- python基础知识总结
- python基础知识总结2
- python Day3 python基础知识总结
- python入门系列1---基础知识
- Docker
- [JZOJ5498]【清华集训2017模拟12.10】大佬的难题
- floor()函数和ceil()函数
- 织梦会员中心的收藏夹文章无法删除解决方法
- RecyclerView添加Header的正确方式
- Python入门基础知识总结
- Myeclipse中使用Maven管理web项目时,端口被占用的解决!
- 解决"There is no Action mapped for namespace / and action name ***"的方法
- 小东吖 之 java 抽奖系统
- DedeCMS修改广告代码后前台不更新的解决方法
- freemarker ftl文件在eclipse中像jsp,html一样编辑高亮
- 地形系统
- pip 国内源 配置
- AndroidStudio中修改项目名称