python笔记 -《python学习手册》

前言:
Python是解释型语言(Golang也是),C/C++是编译型语言。解释型语言的优势是跨平台性,不需要预编译和连接(所有的事情都在程序运行时发生),缺点是速度慢
.py格式的源码先转为字节码,再由PVM虚拟机运行,

一,基本使用以及语法

  • 常见数据类型
1234                                #数字
'spam'                              #字符串
[1,[2,'three'],4]                   #列表
{'food':'spam','taste':'yum'}       #字典
(1,'spam',4,'U')                    #元组
myfile = open('myLib.py','r')       #文件
set('abc'),{'a','b','c'}            #集合
  • 字符串加单引号,布尔型直接用True和False,行末不用分号,输出用print,不要随便缩进
name = 'lxd'
sex = True
print (name)
  • 输入用input,默认是输字符串,限定输出格式用%
data = input('请输入')    
print ('%f' % age)
  • 双乘号作为求幂,字符串*数字表示输出多少个该字符串
print(2 ** 100)
print ('spam' * 10)
  • 通过import 某个.py文件,可以引入模块,通过.运算符,可以访问其中属性
./myLib.py
title = '4416'

./main.py
import myLib
print myLib.title
  • 通过dir(模块名)可以看到模块内部可用变量名,共性的有
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'title']
  • 数字操作
import math
math.sqrt(16)

import random
random.random()
random.choice([1,2,3,4])
  • 字符串操作, 数字,字符串和元组不可变,列表和字典可变
S = 'spam'
len(S)
print(S[0])		#左手第一个字符
print(S[-1]) 	#右手第一个字符
print(S[0:2])	#从第0到第2个字符的字符串
S.find('pa')		#找到相对于字符串起始的偏移量,没有返回-1
S.upper()
S.isalpha()

line = 'aa,bb'
line.split(',')
  • 模式匹配
#需要引入re模块
import re
match = re.match('Hello[ \t]*(.*)world', 'Hello		Python world')		#(.*)匹配任意文本
match.group(1)			#代表 'Python'

phoneNumberRegex = re.compile(r'(\d{3})-(\d{3})-(\d{4})')			#创建一个Regex对象,\d:0到9的所有数字,花括号表示特定匹配次数
mo1=phoneNumberRegex.search('my phone number is 010-123-4567')	#向Regex对象search方法输入字符串,返回一个match对象
mo1.groups()             																		#('010','123','4567')
  • 列表
    这里说一下,python的列表不像java和C++需要指定元素类型,可以把string,int,double都放进一个列表中
L = [123, 'lxd', 2.22]
#可以对列表进行类似字符串的操作
L[0]						#123
L+[4,5]					#[123, 'lxd', 2.22,4,5]
L.append('NI')		#[123, 'lxd', 2.22,'NI']
L.pop(2)					#[123, 2.22,'NI']		删除第二个元素
L.sort()					#默认升序
L.reverse()
  • 边界检查,同样不允许下标越界,会报错
  • 字典
    python的字典是键值对,类似hashmap
D = {'name': {'姓' : '刘', '名' : '能'}, 'age': 18, 'job':['actor']}
#注意key值必须是定义好的变量或者字符串类型
#使用时用索引调value值
D['name']							#{'姓' : '刘', '名' : '能'}
D['job'].append('musician')		#{'name': {'姓' : '刘', '名' : '能'}, 'age': 18, 'job',['actor', 'musician']}	是在'job'的value里进行append操作

#for循环输出D中key-value
Ks = list(D.keys())
for k in Ks:
    print(k, '->', D[k])
#for遍历字符串
for c in 'spam':
    print c.upper()		#	S	P	A	M
#while循环
x = 3
while x > 0 :
    print 'spam!' * x
    x -= 1					#这边注意python不能写x--
"""输出结果
spam!spam!spam!
spam!spam!
spam!
"""
#迭代
squares=[x ** 2 for x in [1,2,3,4,5]]		#[1,4,9,16,25]
  • 文件操作
f = open('data.txt','w')		#类似C文件描述符的打开方式,写模式打开
f.write('Hello')
f.close()

f = open('data.txt')				#默认读方式
text = f.read()						#把文件全部以字符串的形式读出
print	text
  • 自定义的类
class Worker:
    def __init__(self, name, pay):					#define 成员对象
        self.name = name
        self.pay = pay
    def lastName(self):										#成员函数
        return self.name.split()[-1]				#默认用空格分隔
    def giveRaise(self, percent):
        self.pay *= (1.0 + percent)
  • 本章小结
    数字,字符串,列表,字典,元组,文件,集合是python核心数据类型
    数字,字符串,元组对象不可变

二,类型和运算
暂略
三,语句和语法

  • Python语句
#记几个没见过的
while True:
    pass  # 空占位符
while True:
    if exittest(): break
while True:
    if skiptest(): continue
def gen(n):
    for i in n: yield i * 2		#yield 生成器函数
#还有部分代码意义不明,等到后面再写
  • Python和其它语言的关系&区别
#其他语言
if(x<y){
		x = 1;
		y = 2;
}
if x < y :
		x = 1
		y = 2

首先是大括号和分号没有了。复合语句用冒号结尾,这个是学python最开始容易错的地方
然后是省略小括号,(作者建议不要写)
对于嵌套块的处理,python是用缩进来表示,作者认为这能很大程度减少C程序中的由于缩进不严格带来的误解,比如两个if,只有一个else,到底对应哪个if的问题。这点我不认同,毕竟格式化一下,排版自动就好了。倒是全靠缩进,程序复杂了容易看不懂。(当然,python程序代码量肯定没有C多了)

四,if测试和语法规则

x = 'a'
if x == 'a':
	print aaa
elif x == 'b':
	print bbb

#类似switch结构
choice = 'ham'
print({'spam': 1.25,
       'ham': 1.99,
       'egg': 0.99
       }[choice])
# 或者
branch = ({'spam': 1.25,
           'ham': 1.99,
           'egg': 0.99
           })
print branch.get('spam','Bad choice')
print branch.get('bacon','Bad choice')
'''
1.99
1.25
Bad choice
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值