Python编程基本语法

第一个Python程序
 交互模式编程:
 调用解释器不经过脚本文件作为参数,显示以下提示:
 $ python
 Python 2.6.4 (#1, Nov 11 2014, 13:34:43)
 [GCC 4.1.2 20120704 (Red Hat 5.6.2-48)] on linux2
 Type "help", "copyright", "credits" or "license" for more information.
 >>>

键入下列文字在Python提示符,然后按Enter键:
 >>> print "Hello, Python!";

如果您运行的是新的Python版本,那么需要使用打印语句括号像print ("Hello, Python!");。但是在Python版本2.6.4,这将产生以下结果:
 Hello, Python!
脚本模式编程:
 调用解释器及脚本作为参数,并开始执行的脚本,并一直持续到脚本完成。当脚本完成时,解释器不再是活动的。
 让我们在脚本中编写一个简单的Python程序。所有的Python文件将具有.py扩展。所以,把下面的代码写在一个test.py文件。
 print "Hello, Python!";

在这里,我假设你已经在PATH变量中设置Python解释器。现在,尝试如下运行这个程序:
 $ python test.py
 这将产生以下结果:
 Hello, Python!

让我们尝试另一种方式来执行Python脚本。下面是修改后的test.py文件:

#!/usr/bin/python
 print "Hello, Python!";

在这里,假设Python解释器在/usr/bin目录中可用。现在,尝试如下运行这个程序:
 $ chmod +x test.py # This is to make file executable
 $./test.py
 这将产生以下结果:
 Hello, Python!
Python标识符:
 Python标识符是用来标识一个变量,函数,类,模块或其他对象的名称。一个标识符开始以字母A到Z或a〜z或后跟零个或多个字母下划线(_),下划线和数字(0〜9)。
 Python中标识符内不允许标点符号,如@,$和%。 Python是一种区分大小写的编程语言。因此,Manpower 和manpower在Python中是两个不同的标识符。
 这里有Python标识符命名约定:
 • 类名以大写字母以及所有其它标识符以小写字母。
 • 开头单个前导下划线的标识符表示由该标识符约定意思是私有的。
 • 开头两个前导下划线的标识符表示一个强烈的私有的标识符。
 • 如果标识符末尾还具有两个下划线结束时,该标识符是一个语言定义的特殊名称。
保留字:
 下面列出了在Python中的保留字。这些保留字不可以被用作常量或变量,或任何其它标识符。所有Python关键字只包含小写字母。

>>> import keyword
>>> keyword.kwlist
 ['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']
行和缩进:
    一个程序员学习Python时,遇到的第一个需要注意的地方是,不使用括号来表示代码的类和函数定义块或流程控制。代码块是由行缩进,这是严格执行表示方式。
    在缩进位的数目是可变的,但是在块中的所有语句必须缩进相同的量。在这个例子中,两个功能块都很好使用:
if True:
    print "True"
else:
    print "False"

然而,在本实施例中的第二块将产生一个错误:
 if True:
 print "Answer"
 print "True"
 else:
 print "Answer"
 print "False"

因此,在Python中所有的连续线缩进的空格数同样的会结成块。以下是各种语句块中的例子:
注意:不要试图理解所使用的逻辑或不同的功能。只要确定你明白,即使他们各种模块无需括号。
 #!/usr/bin/python

import sys

try:
 # open file stream
 file = open(file_name, "w")

except IOError:
 print "There was an error writing to", file_name
 sys.exit()

print "Enter '", file_finish,
 print "' When finished"

while file_text != file_finish:
 file_text = raw_input("Enter text: ")
 if file_text == file_finish:
 # close the file
 file.close
 break
 file.write(file_text)
 file.write("
 ")

file.close()
 file_name = raw_input("Enter filename: ")

if len(file_name) == 0:
 print "Next time please enter something"
 sys.exit()

try:
 file = open(file_name, "r")

except IOError:
 print "There was an error reading file"
 sys.exit()

file_text = file.read()
 file.close()
 print file_text
多行语句:
 Python语句通常用一个新行结束。 但是,Python允许使用续行字符()来表示,该行应该继续下去(跨行)。例如:
 total = item_one +
 item_two +
 item_three包含在[],{}或()括号内的陈述并不需要使用续行符。例如:
 days = ['Monday', 'Tuesday', 'Wednesday',
 'Thursday', 'Friday']
Python引号:
 Python接受单引号('),双引号(“)和三(''或”“”)引用,以表示字符串常量,只要是同一类型的引号开始和结束的字符串。
 三重引号可以用于跨越多个行的字符串。例如,所有下列是合法的:
 word = 'word'
 sentence = "This is a sentence."
 paragraph = """This is a paragraph. It is
 made up of multiple lines and sentences."""
Python注释:
 一个井号(#),这不是一个字符串文字开头的注释。“#”号之后字符和到物理行是注释的一部分,Python解释器会忽略它们。
 #!/usr/bin/python

# First comment
 print "Hello, Python!"; # second comment这将产生以下结果:
 Hello, Python!

注释可能会在声明中表达或同一行之后:
 name = "Madisetti" # This is again comment你可以使用多行注释如下:
 # This is a comment.
 # This is a comment, too.
 # This is a comment, too.
 # I said that already.
使用空行:
 一行只含有空格,可能带有注释,如果是空行那么Python完全忽略它。
 在交互式解释器会话中,必须输入一个空的物理行终止多行语句。

等待用户:
 程序的下面一行显示的提示,按回车键退出,等待用户按下回车键:
 #!/usr/bin/python

raw_input("

Press the enter key to exit.")在这里,“ 已”被用来显示实际行之前创建两个换行。一旦用户按下键时,程序结束。这是一个很好的技巧,保持一个控制台窗口打开,直到用户完成应用程序运行。
在一行中多个语句:
 分号( ; ) 允许在单行写入多条语句,不管语句是否启动一个新的代码块。下面是使用分号示例:
 import sys; x = 'foo'; sys.stdout.write(x + '
 ')
多个语句组作为套件:
 一组单独的语句,在Python单一的代码块被称为序列。复杂的语句,如if, while, def, and class,那些需要一个标题行和套件。
 标题行开始的声明(与关键字),并终止与冒号(:)),接着是一个或多个线构成该套件。例如:
 if expression :
     suite
 elif expression :
     suite
 else :
     suite
命令行参数:
    我们可能已经看到了,比如,很多程序可以运行,它们提供有关如何运行的一些基本信息。 Python中可以使用 -h 做到这一点:
 $ python -h
 usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
 Options and arguments (and corresponding environment variables):
 -c cmd : program passed in as string (terminates option list)
 -d : debug output from parser (also PYTHONDEBUG=x)
 -E : ignore environment variables (such as PYTHONPATH)
 -h : print this help message and exit
 [ etc. ]
 你也可以设定你的脚本,它应该以这样的方式接受各种选项。

Python文件类型

目录要点:
1.源代码
2.字节代码
3.优化代码

Python常用的有3中文件类型:源代码、字节代码、优化代码


源代码:
Python源代码的文件以”py”为扩展名,由python程序解释,不需要编译

字节代码:
Python源文件经编译后生成的扩展名为”pyc”的文件,用于隐藏代码,提高加载速度
编译方法:
生成单个pyc文件:
方法1:代码方式
#vim compile.py
import py_compile
py_compile.compile(“hello.py”)
方法2:命令行
#python -m py_compile hello.py
-m 相当于脚本中的import
批量生成pyc文件:
一般来说,我们的工程都是在一个目录下的,一般不会说仅仅编译一个py文件而已,而是需要把整个文件夹下的py文件都编译为pyc文件,python又为了我们提供了另一个模块:compileall 。使用方法如下:
方法1:代码方式
import compileall
compileall.compile_dir(r’H:\game’)
方法2:命令行方式
# python -m compileall /root/src/

优化代码:
经过优化编译后的文件,扩展名为“pyo”
pyo是优化编译后的程序,也可以提高加载速度,针对嵌入式系统,把需要的模块编译成pyo文件可以减少容量,其实本质上和pyc没有什么区别
优化方法:
python -O -m py_comile hello.py

注意:
字节代码和优化代码不能直接执行,只能用解释器运行
正确执行方法:
#python hello.pyc
#python hello.pyo
错误执行方法:
#./hello.pyc //这样执行会报错

外翻:
什么是pyc文件:
pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的 python是无法执行的。

为什么需要pyc文件:
py文件是可以直接看到源码的,如果你是开发商业软件的话,不可能把源码也泄漏出去,所以就需要编译为pyc后,再发布出去。当然,pyc文件也是可以反编译的,不同版本编译后的pyc文件是不同的,根据python源码中提供的opcode,可以根据pyc文件反编译出 py文件源码,网上可以找到一个反编译python2.3版本的pyc文件的工具,不过该工具从python2.4开始就要收费了,如果需要反编译出新版本的pyc文件的话,就需要自己动手了,不过你可以自己修改python的源代码中的opcode文件,重新编译 python,从而防止不法分子的破解。

Mac OS X在Xcode7中搭建Python开发环境

一、开发环境准备
1、安装Xcode
2、找到Mac OS X上安装Python的路径。OSX系统默认安装了python,默认的路径为/usr/bin/python

二、创建项目
1、在项目菜单中,选择Other选项卡下的”Build External System”,然后点击”Next”

2、填写”Product Name”和”Build Tool”两个项目,点击”Next”
把Build Tool后面改成/usr/bin/python
3、编辑Scheme
1)、点击菜单的Product->Scheme->Edit Scheme …
2)、Info 选项卡设置
2-1、修改Excutable,选择“other”,然后在弹出的对话框中按 / 键,输入“/usr”,打开隐藏文件夹usr,再一步步找到/usr/bin/python这个程序。
{帮助说明:隐藏文件夹打开方式:在弹出的对话框中按“/” 键,输入“/usr”,然后一步一步找到python}
2-2、修改debug,反选掉。
4、Arguments选项卡设置
在第一个Arguments passed on launch里,新建一个你即将新建的.py文件,例如main.py
5、Option选项卡设置
勾选Working Directory并选择到Xcode Project所在的文件夹,也就是你的.py文件存放的文件夹,最后确定。
6、新建main.py,并且编辑测试代码
6-1、在项目上右键,选择New File新建文件,并且需要选择OS X下的Others选项卡,文件类型为Empty,命名需要为你刚刚在Scheme里添加的文件名,例如main.py。
6-2、编写代码,并点击Run,就可以实现python程序在Xcode下的编译和运行。

从python2.6升级到python2.7

系统环境:centos6u4

由于系统自带的python版本为2.6.6,而2.x版本中当前普遍使用的为2.7版本,所以我们要对系统的python版本做一个升级。下面主要介绍如何升级python版本


1. 官网下载安装包:
#wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz

2. 解压、编译、安装:
#tar zxf Python-2.7.10.tgz
#cd Python-2.7.10
这里需要注意,在编译安装之前,需要确保系统中已经安装了openssl-devel,zlib-devel,readline-devel,sqlite-devel
#yum install -y openssl-devel zlib-devel readline-devel sqlite-devel
#./configure –prefix=/usr/local/python2.7.10
#make && make install

3. 修改当前python命令版本:
安装完成后,查看python版本
#python-V
Python2.6.6

发现版本并没有改变,需要手动建立软链接:
#rm -f /usr/bin/python
这里不必担心误删除,因为在/usr/bin目录下还有一个python2.6命令:
#python2.6-V
Python2.6.6

建立软链接:
#ln -s /usr/local/python2.7.10/bin/python2.7 /usr/bin/python

再查看python版本:
#python-V
Python2.7.10
由于yum命令只支持到python2.6,为防止yum命令失效,修改下面文件:
#vim/usr/bin/yum
将第一行的 #!/usr/bin/python 修改为 #!/usr/bin/python2.6 保存退出即可。

IPython安装

系统环境:rhel6u4

IPython是Python的交互式Shell,提供了代码自动补完,自动缩进,高亮显示,执行Shell命令等非常有用的特性。特别是它的代码补完功能,例如:在输入zlib.之后按下Tab键,IPython会列出zlib模块下所有的属性、方法和类。完全可以取代自带的bash(这需要很大的自制力,哈哈,因为对bash太熟悉了,你懂得)


下载:

https://pypi.python.org/pypi/ipython
或者到git页面下载:https://github.com/ipython/ipython/downloads

下载的文件名为:ipython-5.0.0.tar

注意:只有1.0版本才支持2.6的python,其他高版本必须要python2.7以上

安装:

#tar zvxf ipython-5.0.0.tar
#cd ipython-5.0.0
#python setup.py install

该操作将会在site-packages目录中安装ipyhon的库文件,并在scripts目录中创建一个ipython脚本。在unix系统中,该目录与python的二进制文件目录相同。如果系统中已经安装了python包,则ipython将会安装在/usr/bin目录下。

启动报错:
ImportError: No module named ‘traitlets’ … 后面会报很多类似缺模块的错误,是因为缺包

安装依赖模块:
所有依赖模块都是在这个网站下载(右上角搜索框直接搜索模块名称)

https://pypi.python.org/pypi/
traitlets、ipython_genutils、decorator、pexpect、pickleshare、path.py、setuptools、setuptools_scm、simplegeneric、backports.shutil_get_terminal_size、ipython_genutils、prompt_toolkit、ptyprocess、Pygments

两个小时之后(我这网速也是..哎,泪奔),终于成功了!

做软连接:
# ln -s /usr/local/python2.7.10/bin/ipython /usr/bin/

使用ipython命令界面如下:
[root@vm2 ~]# ipython
Python 2.7.10 (default, Aug 12 2016, 14:14:35)
Type “copyright”, “credits” or “license” for more information.

IPython 5.0.0 — An enhanced Interactive Python.
? -> Introduction and overview of IPython’s features.
%quickref -> Quick reference.
help -> Python’s own help system.
object? -> Details about ‘object’, use ‘object??’ for extra details.

In [1]:

用起来确实很爽,哈哈

这里提一下,在debian系统中,自带ipython,直接安装,cool毙了

Debian安装笔记本wifi驱动

系统环境:debian8.6.0

硬件环境:媳妇儿的老本儿联想Y470,现在讲课用

在安装Debian系统的过程中就被提示缺少wifi固件,第一次使用debian还不知道怎么安装软件也不知道去哪里下载,所以想着先把系统装完再说,结果到wifi能用已经是第二天晚上了。


1.从intel官网下载软件,当时找这个找了好久,没有记下具体地址,百度吧,官网上东西太多,乱花眼,如果你是其他型号笔记本看安装过程中的提示,会告诉你所缺少的固件名称

iwlwifi-1000-ucode-39.31.5.1.tgz

2.解压出下面一个文件
iwlwifi-1000-5.ucode

3.在解压目录下会有README帮助文件,里面只有一句有用的,如下:
#cp iwlwifi-1000-5.ucode /lib/firmware

4.拷贝完成重启系统,搞定

安装笔记软件cherrytree

系统环境:debian8.6.0

官网下载软件:
#wget http://www.giuspen.com/software/cherrytree_0.37.5-1_all.deb

安装:
#dpkg -i cherrytree_0.37.2-1_all.deb

注意:在执行上面命令之后会出现依赖关系问题,手动把依赖包一个一个的安装好,再次执行安装命令
第一次安装的时候依赖性关系比较多,所以我是先安装的其他软件,cherrytree主要是依赖python的各种依赖包,最后安装cherrytree的时候只剩下两个