Python入门

Hello World程序

在linux下创建一个叫hello.py,并输入

print("Hello World!")

  

然后执行命令:python hello.py ,输出:

# vim hello.py
# python hello.py
Hello World!

Python内部执行过程如下:

指定解释器

上一步中执行python hello.py 时,明确的指出hello.py脚本由python解释器来执行。

如果想要类似于执行shelljiaoben一样执行python脚本,例如:./hello.py ,那么我们就需要在hello.py文件头部指定解释器,如下:

#!/usr/bin/env python

print "hello,world"

如此一来,执行: ./hello.py 即可。

ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py

在交互器中执行

除了把程序写在文件里,还可以直接调用Python自带的交互器运行代码,

# python
Python 2.7.10 (default, Oct 23 2015, 18:05:06)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello World!")
Hello World!

内容编码

Python解释器在加载.py文件中的代码时,会对内容进行编码(默认ascill)

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用8位来表示(一个字节),即:2**8=256,所以,ASCII码最多只能表示255个符号。

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要更新出一种可以代表所有字符和符号的编码,即:Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定所有的字符和符号最少由16位来表示(2个字节),即:2**16=65536,

注:此处说的是最少2个字节,可能更多

UTF-8,是对Unicode编码的压缩和优化,它不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ASCII码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存......

所以,python解释器在加载.py文件中的代码是,会对内容进行编码(默认ASCII),如果是如下代码的话:

报错:ascii码无法表示中文

#!/usr/bin/env python

print "你好,世界"

改正:应该告诉python解释器,用什么编码来执行源代码,即:

#!/usr/bin/env python
# -*- coding: utf-8 -*- print "你好,世界"

注意:Python2需要指定字符集,但在python3中就支持万国编码,不需要再指定,默认支持中文。

注释

当行注释:

#被注释的内容
#开发规范:(每一行最多不能超过80个字符)

多行注释:

'''
被注释的内容
'''

初识模块

Python的强大之处在于它有非常非常丰富和强大的库,几乎你想实现的任何功能都有相应的Python库支持,从而使得开发Python程序非常简洁。类库包括三种:

  ·python内部提供的模块

  ·业内开源的模块

  ·程序员自己开发的模块

现在,我们先来象征性的学习两个简单的。

sys

#!/usr/bin/env python

import sys

print(sys.argv)

# 输出
$ python test.py helo world
['test.py', 'helo', 'world'] #把执行脚本时传递的参数获取到了

os

#!/usr/bin/env python

import os

os.system("df -h") #调用系统命令

完全结合一下

import os,sys

os.system(''.join(sys.argv[1:])) #把用户的输入的参数当作一条命令交给os.system来执行

自己写一个模块

python tab补全模块

 #!/usr/bin/env python
# python startup file
import sys
import readline
import rlcompleter
import atexit
import os
# tab completion
readline.parse_and_bind('tab: complete')
# history file
histfile = os.path.join(os.environ['HOME'], '.pythonhistory')
try:
readline.read_history_file(histfile)
except IOError:
pass
atexit.register(readline.write_history_file, histfile)
del os, histfile, readline, rlcompleter

for linux

 import sys
import readline
import rlcompleter if sys.platform == 'darwin' and sys.version_info[0] == 2:
readline.parse_and_bind("bind ^I rl_complete")
else:
readline.parse_and_bind("tab: complete") # linux and python3 on mac

for mac

写完后就可以保存使用了

localhost:~ jieli$ python
Python 2.7.10 (default, Oct 23 2015, 18:05:06)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tab

你会发现,上面自己写的tap.py模块只能在当前目录下导入,如果想在系统的任何一个地方都使用怎么办?此时你就要把这个tab.py放到python全局环境变量目录里啦,基本一般都放在一个叫 Python/2.7/site-packages 目录下,这个目录在不同的OS里放的位置不一样,用 print(sys.path) 可以查看python环境变量列表。

.pyc是什么鬼?

执行python代码时,如果导入了其他的.py文件,那么,执行过程中会自动生成一个与其同名的.pyc文件,该文件就是Python解释器编译之后产生的字节码。

当Python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则重复上面的过程。

ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。

最新文章

  1. 2、ASP.NET MVC入门到精通——Entity Framework入门
  2. 使用PhpDocumentor生成文档
  3. C3P0数据源的使用
  4. ShareSDK 集成 Google+ 登录 400. Error:redirect_uri_mismatch 和 Error Domain=ShareSDKErrorDomain Code=204
  5. BJOI2015 Day1
  6. 【JSP】JSP检查字符串是否为数字
  7. Python string objects implementation
  8. 在今天,我们为什么还要做一个CMS
  9. java设计模式之二抽象工厂模式(Abstract Factory)
  10. ADO.NET 扩展属性、配置文件 和 对战游戏
  11. 网络编程2之Socket简介和java.net包
  12. Spring学习(16)--- 基于Java类的配置Bean 之 基于泛型的自动装配(spring4新增)
  13. [ZOJ3213] Beautiful Meadow
  14. React state和props使用场景
  15. 用PLSQL DEVELOPER工具简单查找ORACLE中的死锁和死锁排除
  16. Ipan笔记-2
  17. 4、Zookeeper简单介绍
  18. Android 发展思路
  19. [wiki]陶德曼调停
  20. python添加fluent日志记录

热门文章

  1. centos 编译 安装 protobuf
  2. Codeforces Round #235 (Div. 2) B. Sereja and Contests
  3. [Java] java.util.Arrays 中使用的 sort 采用的算法 (转)
  4. 【BZOJ1067】【POJ2637】降雨量
  5. 优化UITableViewCell高度计算的那些事
  6. C#后台如何获取客户端访问系统型号
  7. python mysql 单引号字符串过滤
  8. asp.net 操作Excel大全
  9. About_datebase
  10. 关于新增元素使用jQuery on()方法重复绑定的问题