python 基础篇第一篇
本节内容
1、python介绍
2、发展史
3、python2和python3
4、安装
5、简单程序,hello world程序
6、变量
7、用户输入
8、模块初识
9、.pyc是什么?
10、数据类型初识
11、数据运算
12、表达式if...else语句
13、表达式for循环
14、break and continue
15、表达式while 循环
一、python介绍
python 的创始人为吉多.范罗苏姆。吉多.范罗苏姆为打发1989年年圣诞节而开发的一个小的脚本解释程序。是ABC语言的继承。
python 目前世界使用率排行为第五。python崇尚优美、清晰、简单,是一个优秀并且广泛的语言。而且使用率也逐年上升。python目前可以应用于众多的领域,如:数据分析、组件构成、网络服务、图像处理、数值计算和科学计算等众多领域。目前几乎所有大中型的互联网公司都在使用python。如:YouTube、Dropbox、Quora、知乎、Google、Yahoo、百度、腾讯、汽车之家、美团等。
主要应用领域:
云计算:云计算中最火的语言,典型应用Openstack。
WEB开发:python拥有众多优秀的WEB框架,众多的大型网站都是用python开发,YouTube、豆瓣等,典型的WEB框架有Diango
科学运算、人工智能:典型的NumPYthon、SciPY等。
系统运维:运维人员必备语言。
金融:量化交易,金融分析、在金融工程领域,Python不但在用,而且用的最多,而且重要性逐年提高。原因:作为动态语言,python语言结果清晰简单,库丰富,成熟稳定。科学计算和统计分析都很牛逼,科学计算和统计分析也很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测。
图形GUI:
1、python是一门什么样子的语言?
编程语言从编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言这几个方面分析。
1.1 编译器和解释器
编译器:把源程序每条语句都编译成机器语言,并且保存成二进制文件。这样计算机可以直接使用机器语言来运行程序。速度很快。
解释器:只有在执行程序的时候,才会一条一条的翻译成机器语言来给计算机执行。速度不软编译后的程序快。这是因为计算机不能直接认识并且执行我们写的语句。它只能识别机器语言(二进制)。
1.2 低级语言与高级语言
低级语言:最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译。
高级语言:从人类的逻辑思维角度出发的计算机语言,抽象成都大大提高。需要编译成特定机器上的代码后才能执行。
1.3 编译和解释
编译:编译是将源程序翻译成可执行的木编代码,翻译与执行时分开的。
解释:是对源程序解释和翻译一次性完成。不生产可存储的目标代码。
区别:对解释执行而言,程序运行时控制权在解释器而不再用户程序。对编译执行而言,程序运行时的控制权在用户程序。
解释器具有良好的可移植性,和动态性,比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.
1.4 python优缺点
优点:
1、python定位是优雅、明确、简单,所以python看上去容易学,简单易懂。
2、开发效率高。python有非常强大的第三方库,基本上可以实现你想实现的任何功能,python官方库里面有相应的模块进行支持,直接下载调用后,在基础库的基础上在进行开发,大大降低了开发周期,避免重复工作。
3、高级语言,当用python的时候,不需要考虑底层的细节。
4、可移植性,
5、可扩展性,如果你需要你的一段关键代码运行的更快或者希望某些算法不被公开,你可以把部分程序用c或者c++代替。
6、可嵌入性,把python嵌入多种语言当中。
缺点:
1、速度慢。
2、代码不能加密
3、县城不能利用多CPU问题。
1.5 python解释器
python代码是.py结尾,运行时,python解释器去执行.py文件。运行代码时候,要用pyton去执行.py文件。
多种python解释器。
1、Cpython c语言开发,使用最为广泛
2、IPpython 基于Cpython开发。
3、pypy 速度快,采用JIT技术。对python代码进行动态编译。python未来发展的方向。
4、Jython java平台的python解释器
5、IronPython 运行在。net上面的解释器
1.6 为什么是Python而不是其他语言?
C 和 Python、Java、C#等
C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作
其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行
Python 和 C Python这门语言是由C开发而来
对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
对于速度:Python的运行速度相较与C,绝逼是慢了
Python 和 Java、C#等
对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持
对于速度:Python在速度上可能稍显逊色
所以,Python和其他语言没有什么本质区别,其他区别在于:擅长某领域、人才丰富、先入为主。
二、发展史
1、1989年诞生,目前最新版本3.5,老版本2.7兼容2.0版本和3.5版本,2.0版本2020年后不再维护。
三、python2和python3
选python。兼容2.7
2和3的区别
有很多的优化,如少了字符编码的烦恼,库更改了名字等。
四、python的安装
Windows安装
1、下载安装包
https://www.python.org/downloads/2、安装 默认安装路径:C:\python273、配置环境变量 【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】 如:原来的值;C:\python27,切记前面有分号 无需安装,原装Python环境
ps:如果自带2.6,请更新至2.7,同时需要安装3.5>>> print ("hello world")
hello world
>>>
指定解释器:执行上hello world.py的时候,明确指出hello.py脚本由python解释器来执行。
如果想要类似于执行shell脚本一样执行python脚本,则需要在hello.py头部指定解释器,如下。
!/usr/bin/env python
print "hello,world"
六、变量、字符编码
声明变量
#_*_coding:utf-8_*_
name = "Alex Li"
上述代码声明了一个变量,变量名为: name,变量name的值为:"Alex Li"
变量定义的规则:
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名
['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']
变量的赋值
name = "Alex Li
name2 = name
print(name,name2)name = "Jack"print("What is the value of name2 now?")七、字符编码
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。
ASCII无法识别中文,在python中告诉解释器,使用什么编码来执行源代码。即:
#!/usr/bin/env python
# -*- coding: utf-8 -*-注释:
当行注视:# 被注释内容
多行注释:""" 被注释内容 """
八、用户输入
#!/usr/bin/env python
#_*_coding:utf-8_*_#name = raw_input("What is your name?") #only on python 2.xname = input("What is your name?")print("Hello " + name )#!/usr/bin/env python
# -*- coding: utf-8 -*- import getpass # 将用户输入的内容赋值给 name 变量pwd = getpass.getpass("请输入密码:") # 打印输入的内容print(pwd)九、模块初识
Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的。
sys
|
1
2
3
4
5
6
7
8
9
10
11
|
#!/usr/bin/env python# -*- coding: utf-8 -*-import sysprint(sys.argv)#输出$ python test.py helo world['test.py', 'helo', 'world'] #把执行脚本时传递的参数获取到了 |
os
|
1
2
3
4
5
6
|
#!/usr/bin/env python# -*- coding: utf-8 -*-import osos.system("df -h") #调用系统命令 |
完全结合一下
|
1
2
3
|
import os,sysos.system(''.join(sys.argv[1:])) #把用户的输入的参数当作一条命令交给os.system来执行 |
自己写个模块
python tab补全模块
自己写个模块
python tab补全模块

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


1 #!/usr/bin/env python
2 # python startup file
3 import sys
4 import readline
5 import rlcompleter
6 import atexit
7 import os
8 # tab completion
9 readline.parse_and_bind('tab: complete')
10 # history file
11 histfile = os.path.join(os.environ['HOME'], '.pythonhistory')
12 try:
13 readline.read_history_file(histfile)
14 except IOError:
15 pass
16 atexit.register(readline.write_history_file, histfile)
17 del os, histfile, readline, rlcompleter

写完保存后就可以使用了
|
1
2
3
4
5
|
localhost:~ jieli$ pythonPython 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 darwinType "help", "copyright", "credits" or "license" for more information.>>> import tab |
你会发现,上面自己写的tab.py模块只能在当前目录下导入,如果想在系统的何何一个地方都使用怎么办呢? 此时你就要把这个tab.py放到python全局环境变量目录里啦,基本一般都放在一个叫 Python/2.7/site-packages 目录下,这个目录在不同的OS里放的位置不一样,用 print(sys.path) 可以查看python环境变量列表。
十、.pyc是个什么鬼?
Python是一门解释性语言,pyc文件其实是PyCodeObject的一种持久化保存方式。
十一、数据类型初识
1、数字
数字分为int,long,float
2、布尔值
真或者假
1或者0
3、字符串
“hello world”
字符串是 %s;整数 %d;浮点数%f
- 移除空白
- 分割
- 长度
- 索引
- 切片
|
1
2
3
|
name_list = ['alex', 'seven', 'eric']或name_list = list(['alex', 'seven', 'eric']) |
基本操作:
- 索引
- 切片
- 追加
- 删除
- 长度
- 切片
- 循环
- 包含
|
1
2
3
|
ages = (11, 22, 33, 44, 55)或ages = tuple((11, 22, 33, 44, 55)) |
|
1
2
3
|
person = {"name": "mr.wu", 'age': 18}或person = dict({"name": "mr.wu", 'age': 18}) |
常用操作:
- 索引
- 新增
- 删除
- 键、值、键值对
- 循环
- 长度
十二、数据运算
算数运算:
比较运算:
赋值运算:
逻辑运算:
成员运算:
身份运算:
位运算:
运算符优先级:
十三、表达式if ... else
场景一、用户登陆验证
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# 提示输入用户名和密码 # 验证用户名和密码# 如果错误,则输出用户名或密码错误# 如果成功,则输出 欢迎,XXX!#!/usr/bin/env python# -*- coding: encoding -*- import getpass name = raw_input('请输入用户名:')pwd = getpass.getpass('请输入密码:') if name == "alex" and pwd == "cmd": print("欢迎,alex!")else: print("用户名和密码错误") |
场景二、猜年龄游戏
在程序里设定好你的年龄,然后启动程序让用户猜测,用户输入后,根据他的输入提示用户输入的是否正确,如果错误,提示是猜大了还是小了
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/usr/bin/env python# -*- coding: utf-8 -*-my_age = 28user_input = int(input("input your guess num:"))if user_input == my_age: print("Congratulations, you got it !")elif user_input < my_age: print("Oops,think bigger!")else: print("think smaller!") |
十四、表达式for loop
最简单的循环10次
|
1
2
3
4
5
6
|
#_*_coding:utf-8_*___author__ = 'Alex Li'for i in range(10): print("loop:", i ) |
输出:
|
1
2
3
4
5
6
7
8
9
10
|
loop: 0loop: 1loop: 2loop: 3loop: 4loop: 5loop: 6loop: 7loop: 8loop: 9 |
需求一:还是上面的程序,但是遇到小于5的循环次数就不走了,直接跳入下一次循环
|
1
2
3
4
|
for i in range(10): if i<5: continue #不往下走了,直接进入下一次loop print("loop:", i ) |
需求二:还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出
|
1
2
3
4
|
for i in range(10): if i>5: break #不往下走了,直接跳出整个loop print("loop:", i ) |
十五、while loop
有一种循环叫死循环,一经触发,就运行个天荒地老、海枯石烂。
海枯石烂代码
|
1
2
3
4
5
|
count = 0while True: print("你是风儿我是沙,缠缠绵绵到天涯...",count) count +=1 |
其实除了时间,没有什么是永恒的,死loop还是少写为好
上面的代码循环100次就退出吧
|
1
2
3
4
5
6
7
8
|
count = 0while True: print("你是风儿我是沙,缠缠绵绵到天涯...",count) count +=1 if count == 100: print("去你妈的风和沙,你们这些脱了裤子是人,穿上裤子是鬼的臭男人..") break |
回到上面for 循环的例子,如何实现让用户不断的猜年龄,但只给最多3次机会,再猜不对就退出程序。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#!/usr/bin/env python# -*- coding: utf-8 -*-my_age = 28count = 0while count < 3: user_input = int(input("input your guess num:")) if user_input == my_age: print("Congratulations, you got it !") break elif user_input < my_age: print("Oops,think bigger!") else: print("think smaller!") count += 1 #每次loop 计数器+1else: print("猜这么多次都不对,你个笨蛋.") |
python 基础篇第一篇的更多相关文章
- Python基础【第一篇】
一.Python简介 Python的创始人(Guido von Rossum 荷兰人),Guido希望有一种语言既能像C一样方便地调用操作系统的功能接口,也能像shell脚本一样,轻松地实现编程,A ...
- python基础知识第一篇(认识Python)
开发语言: 高级语言:python java php c++ 生成的字节码 字节码转换为机器码 计算机识别运行 低级语言:C 汇编 生成的机器码 PHP语言:适用于网页,局限性 Python,Java ...
- Python 基础【第一篇】环境部署
一.Windows基础环境配置部署 1.1.下载python安装程序 下载地址:https://www.python.org/ftp/python/3.4.1/python-3.4.1.msi 1.2 ...
- Python开发【第一篇】:目录
本系列博文包含 Python基础.前端开发.Web框架.缓存以及队列等,希望可以给正在学习编程的童鞋提供一点帮助!!! Python开发[第一篇]:目录 Python开发[第二篇]:初识Python ...
- Python开发【第一篇】:目录
本系列博文包含Python基础.前端开发.Web框架.缓存以及队列等,希望可以给正在学习Python编程的朋友们提供一点帮助! .Python开发[第一篇]:目录 .Python开发[第二篇]:初始P ...
- 【MM系列】SAP MM模块-基础配置第一篇
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-基础配置第一篇 ...
- JVM学习篇-第一篇
JVM学习篇-第一篇 JDK( Java Development Kit): Java程序设计语言.Java虚拟机.Java类库三部分统称为JDK,JDK是用于支持Java程序开发的最小环境** ...
- Python之路(第一篇):Python简介和基础
一.开发简介 1.开发: 开发语言: 高级语言:python.JAVA.PHP.C#..ruby.Go-->字节码 低级语言: ...
- Android基础学习第一篇—Project目录结构
写在前面的话: 1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对 ...
- python基础-第六篇-6.2模块
python之强大,就是因为它其提供的模块全面,模块的知识点不仅多,而且零散---一个字!错综复杂 没办法,二八原则抓重点咯!只要抓住那些以后常用开发的方法就可以了,哪些是常用的?往下看--找答案~ ...
随机推荐
- ASP.NET WebApi 入门
今天参照微软官方(http://www.asp.net)学习了WebApi,在这里摘录如下: 前言 HTTP 不只是为了生成 web 页面.它也是一个强大的平台,可以建设公开服务和数据的 Api.HT ...
- 定制你自己的jQuery
如何定制你自己的jQuery jQuery随着版本的不断升级代码量也随之增加,从1.0.0的不到两千行到现在的1.10.2已经突破1万行. 新的API不断增加,但有些在项目中并没有用到.jQuery团 ...
- Linq无聊练习系列5--OrderBy ,Groupby练习
/**************OrderBy ,Groupby练习*******************/ //按学生的总分数按降序排列排序 ...
- JobTracker等相关功能模块初始化
[Hadoop代码笔记]Hadoop作业提交之JobTracker等相关功能模块初始化 一.概要描述 本文重点描述在JobTracker一端接收作业.调度作业等几个模块的初始化工作.想过模块的介绍会在 ...
- .net中的emit
.net中的emit .net中的emit命名空间是system.reflection.emit.可见,emit是作为反射的一个比较高级的功能. 反射允许我们在运行时获取对象的相关信息,并执行对象 ...
- 一维数组的 K-Means 聚类算法理解
刚看了这个算法,理解如下,放在这里,备忘,如有错误的地方,请指出,谢谢 需要做聚类的数组我们称之为[源数组]需要一个分组个数K变量来标记需要分多少个组,这个数组我们称之为[聚类中心数组]及一个缓存临时 ...
- rcp(插件开发) 如何查找自己定义的扩展点
规则: 扩展点所在的插件ID(X)+扩展点的name(Y) 也就是 X.Y 具体代码 Platform.getExtensionRegistry().getExtensionPoint(X.Y).ge ...
- JS之For---in 语句
下面说一下for… in语句.可直接把下面的代码复制到浏览器的控制台或Node环境下去执行. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //用来快速迭代对象. var o ...
- C# 添加敏感词
public class CheckStreamReader { //使用的数据: private static HashSet<string> hash = new HashSet< ...
- Asp.net 插入或更改查询字符串
string InsertOrUpdateQueryStringItem(string key, string value) { if (Request.QueryString.HasKeys()) ...