要启动了Python解释器. 只需在命令行输入 :
python
启动后会有:
>>>
这是键入Python语句的提示符
要退出Python提示符
在linux下按 Ctrl-d
在win下按 Ctrl-z
第一个Python程序: helloworld
#源文件 helloworld.py
print 'HelloWorld'
其中以#开始的是注释行.
现在在命令行输入:
python helloworld.py
就可以执行该程序.
获取帮助
例如要查看str类的帮助:
可以在提示符 >>> 后输入 help(str)
就会显示 str 类的帮助. 按q退出帮助.
4. 基本概念
字面意义上的常量
象 1 1.2 9.25e-3 'abc' "abc" 等
数
有4种类型的数: 整数 长整数 浮点数 复数
其中复数的例子如 (-5+4j) 或 (2.3-4.6j) 等.
字符串
可以用单引号字符串. 如 'abc'
双引号字符串的使用和单引号完全一样. 如 "abc"
三引号的字符串是可以多行的. 如 '''abc''' 或 """abc"""
字符串中的转义符:
\' 表示 '
\" 表示 "
\ 表示 \
但行尾的 \ 表示续行.
如果要阻止转义. 可以在字符串前加前缀r或R: r"a\b"
要使用Unicode字符串. 要加前缀u或U: u"abc"
字符串是不可变的.
相邻的两个字符串会被Python自动连接. 如: 'abc' 'def'
Python中把所有的东西都叫对象. 所以象数字. 字符串. 函数等.都是对象.
而要产生一个对象只需要对它赋值就行了.
Python的语句末尾可以不要分号.
但如果你要在同一行上写两个语句. 就需要分号隔开它们.
一行写不下时. 用 \ 续行.
5. 运算符
包括 + - * /
幂 ** 如 2**3
整除 //
取模 %
位左移/右移 << >>
按位与或非 & | ~
按位异或 ^
比较运算 > < >= <= == !=
布尔运算 not and or
运算符优先级
运算符 描述
lambda Lambda表达式
or 布尔“或”
and 布尔“与”
not x 布尔“非”
in,not in 成员测试
is,is not 同一性测试
<,<=,>,>=,!=,== 比较
| 按位或
^ 按位异或
& 按位与
<<,>> 移位
+,- 加法与减法
*,/,% 乘法、除法与取余
+x,-x 正负号
~x 按位翻转
** 指数
x.attribute 属性参考
x[index] 下标
x[index:index] 寻址段
f(arguments...) 函数调用
(experession,...) 绑定或元组显示
[expression,...] 列表显示
{key:datum,...} 字典显示
'expression,...' 字符串转换
6. 控制流
if语句
可以带 else 从句. 也可以带 elif 从句. 它们都需要一个冒号. 如:
number = 23
guess = int(raw_input('Enter an integer : '))
# 这个raw_input函数. 会把参数字符串打印出来. 并把用户的输入返回.
# 然后 int 这个类的构造函数把输入的字符串转化为一个整数.
if guess == number:
print 'Congratulations, you guessed it.'
print "(but you do not win any prizes!)"
elif guess < number:
print 'No, it is a little higher than that'
else:
print 'No, it is a little lower than that'
while语句
它也可以带 else 从句. 如:
while b :
#do sth
else :
#当b为False时. 会执行这里.
#不过. 这个else从句是多余的. 因为直接把这些语句放在while块之后就可以.
for语句
for语句的差别和c中的for很大. Python中的 for in 循环只用来遍历 list .如:
另外它也可以带 else 从句.
for i in range(1, 5)
print i
else
#doSth
注意这个 eles 也是在 while 中的一样.
break语句
它用来结束 while 或 for 循环.
要注意的是. 如果使用 break 语句跳出循环. 那循环语句的 else 从句也会被跳过.
continue语句
也是用在 while 或 for 循环中. 和c的一样.
7. 函数
函数定义的格式:
def 函数名 ( 参数表 ) :
#参数表是用 逗号 分割的变量名. 可以为空.
函数体
例如:
def printMax(a, b):
if a > b:
print a, 'is maximum'
else:
print b, 'is maximum'
#调用
printMax(3, 4)
函数的局部变量
局部变量只在函数内可见. 例如:
def func(x)
x = 2
# 下边的 x 和func中的局部变量x没有关系.
x = 3
但是. 如果要在函数func中访问全局的 x . 则需要使用 global 语句. 如:
def func()
#在函数内声明一个全局变量 x.
global x
print x
x = 2
# 定义全局变量 x
x = 3
默认的参数值
默认值是不可改变的.
函数调用时. 可以对指定参数名的参数赋值.
def func(i, j)
pass # pass 在Python中表示一个空的语句块
func(i=3, j=4)
func(j=4, i=3)
返回语句 return
若 return 后面没有指定要返回的值. 则返回 None
函数的 DocString
函数定义中的第一个逻辑行中的字符串. 就是这个函数的 "文档字符串".
其实除了函数. 还有模块和类. 也都有文档字符串. 可以用 __doc__ 属性访问它们.
习惯上. 它用多行字符串来表示. 第一行以大写字母开始. 句号结尾. 第二行是空行.
从第三行开始是详细描述.
8. 模块
使用 sys 模块
sys 的 argv 变量是一个字符串list. 其中的字符串是命令行参数. 和c语言的main()的第2个参数类似.
例如. 如果我们在命令行中输入:
python using_sys.py we are arguments
则 sys.argv[0] 将是 "using_sys.py"
因为模块名总是 argv 中的第一个元素(即argv[0]).
sys 的 path 变量也是一个字符串list. 包含的是输入模块的目录名列表.
我们可以修改这个list. 让它包含我们自己的模块.
不过 sys.path 的第一个字符串是一个空串. 这表示它包含 "当前目录".
导入模块
import 模块名
要直接使用模块中的名字(而不用模块名限定). 用:
form 模块名 import 名字
要得到一个模块的名字. 用 __name__ 属性.
当一个模块被第一次输入的时候. 会执行该模块的主块. 例如:
# filename: abc.py
if __name__ == '__main__'
print 'run by itself'
else
print "i'm being imported from another module"
则当我们在控制台中输入:
python abc.py
时. 会打印: run by itself
而当我们在python提示符中输入:
>>> import abc
时. 会打印 i'm being imported from anather module
使用内置函数 dir 可以列出一个模块内的的名字(包括函数. 变量. 类). 如:
dir(sys)
将会打印定义在 sys 中的名字.
如果没有给 dir 函数指定参数. 则表示打印当前模块中的名字. 如:
>>> dir()
['__builtins__', '__doc__', '__name__']
>>> import sys #注意. 导入的模块也是当前模块的一个名字. 如:
>>> dir()
['__builtins__', '__doc__', '__name__', 'sys']
>>> a= 5 # 注意. 新定义的变量也是模块中的名字. 如:
>>> dir()
['__builtins__', '__doc__', '__name__', 'a', 'sys']
>>> del a # 注意. 这会删除当前模块中的变量 a . 以后无法再使用它.
>>> dir()
['__builtins__', '__doc__', '__name__', 'sys']
9. 数据结构
见<<Dive Into Python>>的笔记
11. 面向对象的编程
Python中所有东西都是对象.
类的数据成员. 称为 域.
成员函数被称为 方法.
域和方法合称为 属性.
类的非静态数据成员不需声明. 而是在方法定义中对 self.成员赋值的时候产生.
但是static 数据成员却需要声明. 如下:
class A:
i = 0 #static
def __init__ (self):
self.m = 1 #非静态成员
如果要让一个数据成员是私有的. 需要让该数据成员的名字以 __ 开始.
12. 输入输出
在交互窗口中. 可以用 raw_input 和 print 语句来输入/输出.
在文件的输入输出中. 就要使用 file 类.
存储器
把对象写入文件. 就是序列化对象.
Python中有一个 pickle 模块专门做这件事. 不过用 cPickle 模块(用c语言编写)更快.
存储与取存储
如:
import cPickle as p
#import pickle as p
# 注意上边两行. 使用了 import as 语法. 用来导入模块时给模块指定另一个名字.
# 这种用法有一个好处. 就是在下边的代码中只使用p这个名字.
# 所以以后要用 pickle 模块取代 cPickle 模块时. 就只要在这里换一下就好了.
shopli = ['apple', 'mango', 'carrot']
f = file('shoplist.data', 'w')
p.dump(shopli, f) #存储
f.close()
del shoplist
f = file('shoplist.data')
shopli = p.load(f) #取存储
print shopli
13. 异常
异常用 raise 来抛出. 用 try except finally 来处理.
例如:
try:
s = raw_input('Enter sth')
except EOFError:
# 例如输入了EOF. (在win中是 Ctrl + z). 会产生 EOFError 异常.
print 'Input is Eof'
sys.exit()
except:
# except后边如果没有指定要捕获的异常类型. 则表示捕获所有异常.
print 'Some error occurred.'
finally:
# 无论是否捕获异常都要执行该块.
要抛出异常. 用 raise 语句. 抛出的异常(或错误)要是 Exception(或Error) 的子类.
例如自定义一个异常类:
class ShortInputException(Exception):
''' A user-defined exception class. '''
def __init__(self, length, atleast):
Exception.__init__(self) #Python中的派生类初始化时. 并不自动初始化基类.
self.length = length
self.atleast = atleast
这个自定义的异常类使用如下:
try:
s = raw_input("Enter Sth")
if len(s) < 3 :
raise ShortInputException(len(s), 3) #构造并抛出异常对象
except ShortInputException, x:
#注意上边一行. 使用 x 来接收抛出的 ShortInputException 异常对象.
pirnt 'ShortInputException: the input was of length %d, \
was expecting at least %d' % (x.length, x.atleast)
14. 标准库
os模块
os.getcwd() 得到当前工作目录,即当前Python脚本工作的目录
os.getenv() 读取环境变量
os.putenv() 设置环境变量
os.listdir() 返回指定目录下的所有文件和目录名
os.remove() 删除一个文件
os.system() 用来运行shell命令
os.linesep 字符串给出当前平台使用的行终止符
Windows用'\r\n', Linux用'\n', Mac使用'\r'
os.path.split() 返回一个路径的目录名和文件名。
os.path.isfile() 路径是一个文件?
os.path.isdir() 路径是一个目录?
os.path.existe() 路径是否真地存在?
15. 特殊用法
让函数接收可变数量的参数
例如:
def func(x, *args) :
for i in args:
......
注意函数的参数 args前边有一个 *. 表示args将要接收的是 一组实参构成的元组.
所以调用这个函数时. 参数可以多于函数的形参数目. 多余的参数会作为一个元组存储在args中.
所以当用 func(2, 3) 调用时. args接收的参数是只有一个元素的元组 (3,)
当用 func(2, 3, 4) 调用时. args接收的是元组 (3, 4)
上边的例子中. args 前边有一个前缀* . 表示要接收元组.
如果参数名之前放了两个*(如 **args). 则表示调用函数时. 多于的参数会作为字典的键值对.
exec语句
用来执行保存在字符串(或文件)中的 Python语句. 如:
s = 'print "hello world" '
exec s
就会执行 s 中保存的 Python 语句.
eval语句
用来计算保存在字符串中的 Python表达式的值. 如:
s = '2*3'
eval_r(s)
上一句会返回6.
assert语句
用来断言一个表达式为真.
所以当执行时. 如果该表达式值为假. 会引发一个 AssertionError 错误.
例如:
assert 1>2
执行时会出错.
repr函数
用来取得一个对象的字符串表示.
注意. 用反引号(也称转换符) `(在键盘最左边)可以得到同样的功能. 如:
>>> i = 3
>>> `i`
'3'
>>> repr(i)
'3'
16.
>>> import string
>>> song = "The rain in Spain..."
>>> string.split(song)
['The', 'rain', 'in', 'Spain...']
song="the,rain,in"
string.split(song,',')
['the', 'rain', 'in']
>>> list = ['The', 'rain', 'in', 'Spain...']
>>> string.join(list)
'The rain in Spain...'
>>> string.join(list, '_')
'The_rain_in_Spain...'
17.
如果你有一个字典 oneDict,而想用另一个不同的字典 otherDict 的内容替换它,只需要用:
oneDict.update(otherDict)
>>> p1={'aa':'dsd','bb':'dsafd'}
>>> p2={'bb':'dsdsds','cc':'dsa'}
>>> p1.update(p2)
>>> p1
{'aa': 'dsd', 'cc': 'dsa', 'bb': 'dsdsds'}
分享到:
相关推荐
转载自https://blog.csdn.net/hanzy88/article/details/79583706
本人复习资料以及读书笔记,欢迎批评指针,转载请注明出处
前言:今年在读大二,苦逼学python,写博客为了更好的总结知识,每次写博客可能要花费几个小时,或者更多时间来总结知识,这是一篇3分钟就可以学会Python程序语法元素分析,如果你觉得文章对你有帮助,可以在文章...
Python全面教程 本人自学Python的手写笔记,Markdown版本,可以自己转PDF 此文档从安装Python软件到学习面向对象 ©此文档是本人精心制作的,未经允许不许转载!
转载本文章请标明作者和出处 本文出自《Darwin的程序空间》 能阻止你成功的人,只有你自己 vlog 时间:2020年02月28日-2020年03月01日 ——————两个白天,一个通宵 学习方式:视频(黑马),博客,百度 完成...
可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2008/11/03/python-memo/以及本声明。 基本概念 Python居然支持复数。如(-5+4j)。但要注意虚数单位单独使用时要写成 1j,不能写成 j。...
本文基于Python3.7 1. 相关 什么是异常?异常就是“不正常”。...本文最先由Baldwin_Keepmind发表于CSDN,转载请注明出处。作者博客地址:https://blog.csdn.net/shouchenchuan5253 2.Python异常 Pyth
.zip,技术博客笔记大汇总【15年10月到至今】,包括Java基础及深入知识点,Android技术博客,Python,Go学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,...
开发 主要包括Go和Python两种语言; 编排与调度 以容器技术为中心记录个人的一些笔记; 监控与可视化 主要是针对容器云的集群监控和可视化笔记; 持续集成与部署 结合容器云的CI/CD总结。 怎么联系我 Telegram: ...
内部包含记录笔记、翻译、输入doi文献下载,工作安排,日历,查看路径,打开cmd,打开浏览器,打开其他文件,markdown语法等。 使用python编写,欢迎大家提意见,如果下载的人多,后续会上传源代码提供大家学习。 ...
如果您要转载本仓库中的笔记到其他地方,欢迎添加笔记的仓库地址: 推荐使用在线阅读,在线阅读内容本仓库同步一致。这种方式阅读的优势在于:靠近边栏有目录,阅读体验更好。 目录 服务端技术 卷曲 高朗 Linux ...
计算机二级公共基础,转载自B站。
python学习资料(转载)python学习笔记 1. Model 类, 实体类 ,实体类中的字段与数据库中的表字段一一对应,用来包装信息实体的基础类,并且可以验证这条数据的完整性 2. ModelManager 类:是实体类的管理类,通常...
博客笔记大汇总【16年3月到至今】,包括Java基础及深入知识点,Android技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……...
博客笔记大汇总【16年3月到至今】,包括Java基础及深入知识点,Android技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……...
Python 中的黑体辐射和宇宙微波背景 (CMB):第一部分 Python 中的黑体辐射和宇宙微波背景 (CMB):第二部分 一种从 Python 到 SDSS 数据库进行 SQL 查询的简单方法 天体的颜色:第一部分 天体的颜色:第二部分 天体的...
目前已收录C / C ++,操作系统,数据结构,计算机网络,MySQL,Redis等面试资料,未来打算继续收录Java,Python,Go等面试常见问题,坚持进行仓库维护下去。 :open_book:仓库建议 :folded_hands:本仓库脱胎于阿秀...
笔记 目前,该软件包仅适用于类 Unix 环境和 MacOS。 由于库的限制,不支持 MS Windows 操作系统。 我们正在为 MS Windows 开发的端口,但可能需要一段时间。 同时,您可以使用我们的映像,可在下载。 安装 此包的...
data/ :适用时,可以在此目录中找到我们使用的数据的转载 notebooks/ :包含团队在开发过程中使用的jupyter笔记本 tools/ :可以在此处找到任何在开发过程中使用的数据注释工具或帮助程序代码 src/ :生产代码可以...