SECTION 1 python核心编程 快速入门
创始人
2024-03-25 18:47:18
0

快速入门

  • 基础篇
        • 1.下载解压编译安装
        • 2.命令行启动脚本
          • 2.1 通过解释器运行
          • 2.2 终端显示输出
          • 2.3 在交互式解释器获取帮助
          • 2.4 注释
          • 2.5 常用运算符
          • 2.6 比较运算符
          • 2.7 逻辑运算符:
          • 2.8 变量
          • 2.9 数字
          • 2.10 字符串
            • 2.10.1 加号(+)
            • 2.10.2 乘号(*)
            • 2.10.3 切片
          • 2.11 列表和元组
          • 2.12 字典
          • 2.13 代码块及缩进对齐
          • 2.14 if语句
          • 2.15 while循环
          • 2.16 for 循环和 range()内建函数
          • 2.17 列表解析
          • 2.18 文件和内建函数 open()
          • 2.19 错误和异常
          • 2.20 函数
          • 2.21 类
          • 2.22 模块
          • 2.23 什么是“PEP”?
          • 2.24 实用的函数
          • 2.25 小练习:

说明:本系列代码均在Centos7运行,python2.7

基础篇

1.下载解压编译安装

centos
windows安装

2.命令行启动脚本

2.1 通过解释器运行
]# python echo.py 

在你的脚本的第一行使用 shell 魔术字符串(“sh-bang”)

]# cat echo.py 
#!/usr/bin/python2.7
print 123
]# chmod u+x echo.py 
[root@localhost ~]# ./echo.py 
123

据说某些unix系统还可以直接运行脚本,笔者系统不支持…

]# cat script.py 
#!/bin/env python
print 123
]# script.py
bash: script.py: command not found...

在所有的交互示例中,你会看到 Python 的主提示符( >>> )和次提示符( … )。主提示符是解释器告诉你它在等待你
输入下一个语句,次提示符告诉你解释器正在等待你输入当前语句的其它部分。

2.2 终端显示输出

关键字print显示变量的值,python3以后print是内置函数,所以需要print()打印内容

>>> print "hello world"

重定向输出到文件

>>> logfile = open('/tmp/mylog.txt', 'a')
>>> print >> logfile, 'Fatal error: invalid input!'
>>> logfile.close()

替换%,格式:“%s”%(string)

>>> print "%s is number %d!" % ("Python", 1)
Python is number 1!

得到数据输入的最容易的方法是使用 raw_input()内建函数

>>> user = raw_input('Enter login name: ')
Enter login name: root
>>> print "your login is:",user
your login is: root
2.3 在交互式解释器获取帮助

help(raw_input)

2.4 注释

#

2.5 常用运算符
+
-
*
/
//
%
**

/和//区别:在Python中“/”表示浮点数除法,返回浮点结果,也就是结果为浮点数,而“//”在Python中表示整数除法,返回不大于结果的一个最大的整数,意思就是除法结果向下取整。

2.6 比较运算符
<
<=
>
>=
==
!=或<>
2.7 逻辑运算符:
and
or
not

优先级:常用运算符>比较运算符>逻辑运算符

2.8 变量

python变量名由字母、数字和下划线组成,不能以数字开头,大小写敏感
python是动态类型语言,不需要事先声明变量,变量类型和值在赋值时被初始化
通过等号(=)赋值
不支持自增和自减操作符,–n等于n
str=“abc”
n=10

2.9 数字

python支持5种基础数字类型,其中3种为整数类型

int 有符号整数
long 长整数
bool 布尔值
float 浮点值
complex 复数

python中long类型要远大于其他语言的长整数,实际只受内存限制

2.10 字符串

Python 中字符串被定义为引号之间的字符集合,Python 支持使用成对的单引号或双引号,三引号(三个连续的单引号或者双引号)可以用来包含特殊字符。
使用索引运算符( [ ] )和切片运算符( [ : ] )可以得到子字符串。字符串有其特有的索引规则:第一个字符的索引是 0,最后一个字符的索引是 -1
python中单双引号,没有实质区别,主要用于区分彼此

2.10.1 加号(+)

用于字符串连接

>>> a='as'+'you'
>>> print a
asyou
2.10.2 乘号(*)

用于字符串重复,仅支持正整数*字符串(负数乘完为空)

>>> print a*2
asyouasyou
2.10.3 切片

[start:end]左开右闭,即包括左边指定的索引,截止到右边索引前

>>> b="abcdefghigk"
>>> print b[:3]
abc
>>> print b[3:]
defghigk

索引以0开始,-1为最后一个字符,-2为到数第二个等等

2.11 列表和元组

可以将列表和元组当成普通的“数组”,它能保存任意数量任意类型的 Python 对象。和数组一样,通过从 0 开始的数字索引访问元素,但是列表和元组可以存储不同类型的对象。
列表和元组有几处重要的区别:

列表元素用中括号( [ ])包裹,元素的个数及元素的值可以改变。
元组元素用小括号(( ))包裹,不可以更改(尽管他们的内容可以)。元组可以看成是只读的列表。通过切片运算( [ ] 和 [ : ] )可以得到子集,这一点与字符串的使用方法一样。

元组和列表均可以使用切片和索引

2.12 字典

字典是 Python 中的映射数据类型,由键-值(key-value)对构成。
几乎所有类型的 Python 对象都可以用作,不过一般还是以数字或者字符串最为常用。
可以是任意类型的 Python 对象,字典元素用大括号({ })包裹。

>>> adict={'host':'server'}
>>> adict['port']=8080
>>> print adict
{'host': 'server', 'port': 8080}
2.13 代码块及缩进对齐

代码块通过缩进对齐表达代码逻辑而不是使用大括号,因为没有了额外的字符,程序的可读性更高。而且缩进完全能够清楚地表达一个语句属于哪个代码块。当然,代码块也可以只有一个语句组成。

python遵循PEP8,其中要求缩进为4个空格,不建议使用tab,更不建议混用
可以把文本编辑器的tab设置为4个空格

缩进问题报错:

File "", line 2print a^
IndentationError: expected an indented block
2.14 if语句

标准 if 条件语句的语法如下:

if expression:if_suite

如果表达式的值非 0 或者为布尔值 True, 则代码组 if_suite 被执行; 否则就去执行下一条语句。
代码组是一个 Python 术语, 它由一条或多条语句组成,表示一个子代码块。
Python与其它语言不同, 条件条达式并不需要用括号括起来。

>>> if a != 'false':
...     print a
... 
100

Python 还支持 elif (意指 “else-if ”)语句,语法如下:

if expression1:if_suite
elif expression2:elif_suite
else:else_suite

注:suite套件

2.15 while循环
while expression:while_suite

语句 while_suite 会被连续不断的循环执行, 直到表达式的值变成 0 或 False; 接着Python 会执行下一句代码

>>> while a > 0:
...     print a
...     a-=25
... 
100
75
50
25
2.16 for 循环和 range()内建函数

Python 中的 for 接受可迭代对象(例如序列或迭代器)作为其参数,每次迭代其中一个元素,直到迭代完所有元素。

>>> for item in "what a wonderful world":
...     print item
... 
w
h
a
t
...

为了输出清晰美观, 带逗号的 print 语句输出的元素之间会自动添加一个空格

>>> for item in "what a wonderful world":
...     print item,
... 
w h a t   a   w o n d e r f u l   w o r l d

Python 提供了一个 range()内建函数来生成可迭代的数字列表。
range()函数经常和 len()函数一起用于字符串索引

>>> foo='abc'
>>> for item in range(len(foo)):
...     print foo[item]
... 
a
b
c

enumerate()可以同时迭代索引和元素

>>> for index,item in enumerate(foo):
...     print index,item
... 
0 a
1 b
2 c
2.17 列表解析

可以在一行中使用一个 for 循环将所有值放到一个列表当中

>>> list=[x for x in range(3)]
>>> print list
[0, 1, 2]
>>> list=[x for x in range(10) if x %2==0]
>>> print list
[0, 2, 4, 6, 8]
2.18 文件和内建函数 open()

读取文件
handle = open(file_name, access_mode = 'r')

file_name 变量包含我们希望打开的文件的字符串名字
access_mode 中 ‘r’ 表示读取,‘w’ 表示写入, ‘a’ 表示添加。其它可能用到的标声还有 ‘+’ 表示读写, 'b’表示二进制访问. 如果未提供 access_mode , 默认值为 ‘r’。
如果 open() 成功, 一个文件对象句柄会被返回。所有后续的文件操作都必须通过此文件句柄进行。当一个文件对象返回之后,我们就可以访问它的一些方法, 比如 readlines() 和 close().

>>> handle=open('/tmp/mylog.txt', 'r')
>>> for line in handle:
...     print line
... 
Fatal error: invalid input!aaaaaaabbbbbbbccccccc>>> handle.close()

出现空行是由于读取的每行数据自带换行,而print也会补充一个换行

2.19 错误和异常

编译时会检查语法错误, 不过 Python 也允许在程序运行时检测错误。当检测到一个错误,Python 解释器就引发一个异常, 并显示异常的详细信息。
要给你的代码添加错误检测及异常处理, 只要将它们封装在 try-except 语句当中。 try之后的代码组, 就是你打算管理的代码。 except 之后的代码组, 则是你处理错误的代码。

>>> try:
...     a=1/0
... except:
...     print 'error'
... 
error
2.20 函数

Python 中的函数使用小括号( () )调用。函数在调用之前必须先定义。如果函数中没有 return 语句, 就会自动返回 None 对象。
Python 是通过引用调用的。 这意味着函数内对参数的改变会影响到原始对象。不过事实上只有可变对象会受此影响, 对不可变对象来说, 它的行为类似按值调用。
关键字def,格式

def function_name([arguments]):"optional documentation string"function_suite

调用:function_name([arguments])

定义一个函数的语法由 def 关键字及紧随其后的函数名再加上该函数需要的几个参数组成。函数参数(比较上面例子中的 arguments)是可选的, 这也是为什么把它们放到中括号中的原因。(在你的代码里千万别写上中括号!)这个语句由一个冒号(:)结束(与 if 和 while语句的结束方式一样), 之后是代表函数体的代码组, 下面是一个简短的例子:

>>> def add(a,b):
...     return a+b
... 
>>> def add(a,b):
...     print a+b
... 
>>> add(1,2)
3
>>> add("a","b")
ab

函数的参数可以有一个默认值, 如果提供有默认值,在函数定义中, 参数以赋值语句的形式提供。事实上这仅仅是提供默认参数的语法,它表示函数调用时如果没有提供这个参数, 它就取这个值做为默认值。

>>> def add(a,b=1):
...     print a+b
... 
>>> add(1)
2

注意带有默认值的参数应放在参数列表的后部

2.21 类

类是面向对象编程的核心, 它扮演相关数据及逻辑的容器角色。它们提供了创建“真实”
对象(也就是实例)的蓝图。
关键字class,格式

class ClassName(base_class[es]):"optional documentation string"static_member_declarationsmethod_declarations

可以提供一个可选的父类或者说基类; 如果没有合适的基类,那就使用 object 作为基类。class 行之后是可选的文档字符串, 静态成员定义及方法定义。

>>> class Foo():
...     def __init__(self,nm="john"):
...             self.name=nm
...     def showname(self):
...             print self.name
...     version=0.1
...     def showver(self):
...             print self.version
... 
>>> foo=Foo("lidan")
>>> foo.showname()
lidan
>>> foo.showver()
0.1
>>> foo.showver
>
>>> foo.version
0.1
>>> print foo.version
0.1

每个方法都有的一个参数, self.什么是 self ? 它是类实例自身的引用。
创建一个类实例就像调用一个函数, 它们确实拥有一样的语法。它们都是可调用对象。类实例使用同样的函数运算符调用一个函数或方法。

2.22 模块

模块是一种组织形式, 它将彼此有关系的 Python 代码组织到一个个独立文件当中。模块可以包含可执行代码, 函数和类或者这些东西的组合。当你创建了一个 Python 源文件,模块的名字就是不带 .py 后缀的文件名。一个模块创建之后, 你可以从另一个模块中使用 import 语句导入这个模块来使用。
导入模块
import module_name
一旦导入完成, 一个模块的属性(函数和变量)可以通过熟悉的 .句点属性标识法访问。
module.function()
module.variable

>>> import sys
>>> sys.stdout.write('hello world\n')
hello world
>>> sys.platform
'linux2'
>>> sys.version
'2.7.5 (default, Oct 14 2020, 14:45:30) \n[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]'
2.23 什么是“PEP”?

在本书中你会经常看到 PEP 这个字眼。 一个 PEP 就是一个 Python 增强提案(Python Enhancement Proposal), 这也是在新版 Python 中增加新特性的方式。 从初学者的角度看,它们是一些高级读物, 它们不但提供了新特性的完整描述, 还有添加这些新特性的理由, 如果需要的话, 还会提供新的语法、 技术实现细节、向后兼容信息等等。在一个新特性被整合进 Python 之前,必须通过 Python 开发社区, PEP 作者及实现者, 还有 Python 的创始人, Guido van Rossum(Python 终身的仁慈的独裁者)的一致同意。PEP1 阐述了 PEP 的目标及书写指南。在 PEP0 中可以找到所有的 PEP。在PEP8中定义了python的编码规范。 PEP 索引的网址是: http://python.org/dev/peps.

2.24 实用的函数

Python常用的内建函数

函数 描述
dir([obj]) 显示对象的属性,如果没有提供参数, 则显示全局变量的名字
help([obj]) 以一种整齐美观的形式 显示对象的文档字符串, 如果没有提供任何参数, 则会进入交互式帮助。
int(obj) 将一个对象转换为整数
len(obj) 返回对象的长度
open(fn, mode) 以 mode(‘r’ = 读, ‘w’= 写)方式打开一个文件名为 fn 的文件
range([[ start ,] stop [, step ])返回一个整数列表。起始值为 start, 结束值为 stop - 1; start默认值为 0, step默认值为1。
raw_input(str) 等待用户输入一个字符串, 可以提供一个可选的参数 str 用作提示信息。
str(obj) 将一个对象转换为字符串
type(obj) 返回对象的类型(返回值本身是一个 type 对象!)

2.25 小练习:

1.带循环和条件判断的用户输入使用raw_input()函数来提示用户输入一个1和100之间的数,如果用户输入的数满足这个条件,显示成功并退出。否则显示一个错误信息然后再次提示用户输入数值,直到满足条件为止。

2.带文本菜单的程序写一个带文本菜单的程序,菜单项如下(1)取五个数的和(2)取五个数的平均值…(X)退出。由用户做一个选择,然后执行相应的功能。当用户选择退出时程序结束。这个程序的有用之处在于用户在功能之间切换不需要一遍一遍的重新启动你的脚本。(这对开发人员测试自己的程序也会大有用处)

3.让用户输入三个数值并将分别将它们保存到3个不同的变量中。不使用列表或排序算法,自己写代码来对这三个数由小到大排序。(b)修改(a)的解决方案,使之从大到小排序

相关内容

热门资讯

锚定“十五五”开局 专家建言宏... 12月27日,中国社会科学院财经战略研究院、浙江财经大学共同举办的“财经战略年会(2025)暨第二届...
每周股票复盘:锴威特(6886... 截至2025年12月26日收盘,锴威特(688693)报收于37.41元,较上周的37.28元上涨0...
资深征地律师助力维权,孙侠律师 在征地拆迁领域,遇到专业、靠谱的律师至关重要。资深征地律师、出名征地律师的专业服务,能为当事人在复杂...
推动法律监督新格局走深走实 推动法律监督新格局走深走实 ——专访二级大检察官,天津市检察院党组书记、检察长陈凤超 天津市检察院...
鱼全翻着白肚皮,水还变黑了!养... 图片来源:摄图网 本文为《方圆》杂志原创稿件 这天,养鱼户陆大军发现 鱼塘里的鱼竟然全部翻着白肚皮,...
问法预告|遇到网络纠纷不知如何... 如今,互联网已经成为人们生活工作的重要场所,随着应用场景的增多,与互联网有关的纠纷也呈现上升趋势。从...
电商平台律师推荐:上海正策(杭... 在电商行业蓬勃发展的今天,各类法律问题也随之而来,选择一位靠谱的电商平台律师至关重要。那么,电商平台...
东城区“集贤人才”大会举办 发... 人民网北京12月28日电 (记者池梦蕊)12月27日,以“集贤东城·‘才’创未来”为主题的东城区“集...
闪评 | 日本内阁连曝政治资金... 当地时间12月26日,日本总务大臣林芳正公开道歉,原因在于其竞选团队向山口县选举管理委员会提交的去年...
不靠美政府建高铁了!加州撤回起... 央视记者当地时间12月27日获悉,美国加利福尼亚州已正式撤回此前针对美联邦政府的诉讼,不再挑战联邦政...