Python笔记(一):初识python

 

Python简介

一、Python由来

  1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是BBC电视剧——蒙提·派森的飞行马戏团(Monty Python's Flying Circus)的爱好者。

二、什么是Python

  Python是一种编程语言,Python是一门动态解释性的强类型定义语言。 

编程语言:

  计算机只能识别二进制码,只认识0101010....

机器语言:
用二进制码0和1描述的指令称为机器指令,所有机器指令的集合构成计算机的机器语言。
机器语言属于低级语言 最底层
直观性差,容易出错
汇编语言:
实质和机器语言相同,都是直接对硬件进行操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。
一句指令只能对应实际操作中一个很细微的动作,冗长,复杂,易出错
可执行文件比较小,执行速度快
高级语言:
相对于汇编语言而言,并不是特指某一种语言 C、C++、java、php、python、go、C#.....
它将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节。
对开发人员更友好,在开发效率上大大提高
程序不能直接被计算机识别,必须经过转换才能被执行

编译类:
程序执行前,就将程序源代码一次性编译成机器语言,然后计算机直接执行
C、C++、Delphi....
优点:
程序执行时,不再需要源代码,不依赖语言环境,因为执行的是机器码文件
执行速度快
缺点:
每次修改源代码后,需要重新编译
跨平台性不好,不同操作系统,调用底层的机器指令不同,需为不同的平台生成不同的机器码文件
解释类:
程序执行时,由解释器将代码一行一行翻译成机器语言,边翻译边执行
Python、Java、PHP、Ruby....
优点:
天生跨平台,因为解释器已经做好了对不同平台的交互处理
随时修改,立即见效
缺点:
运行效率低,所有代码边解释边执行,速度比编译型慢很多
代码是明文

 

      动态类型语言和静态类型语言主要针对数据类型检查的时间问题。

      动态语言

      是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。

          Python、Ruby、Erlang、JavaScript、swift、PHP、SQL、Perl...

    静态语言

      是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。

      C、C++、C#、Java、Object-C...

   注意:通常情况下解释型语言是动态类型语言,编译型语言是静态类型语言。但也不全是,swift是编译型语言但是它也是动态类型语言。C#和Java是解释型语言也是静态类型语言。

 

    强类型语言:

      一旦一个变量被指定了某个数据类型,如果不经过强制类型转换,那么它就永远是这个数据类型。你不能把一个整形变量当成一个字符串来处理。

      Java、C#、Python、Object-C、Ruby...

    弱类型语言:

      数据类型可以被忽略,一个变量可以赋不同数据类型的值。一旦给一个整型变量a赋一个字符串值,那么a就变成字符类型。

      JavaScript、PHP、C、C++...

 

三、Python分类

CPython:
python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
IPython:
基于CPython之上的一个交互式解释器
PyPy:
目标是执行速度,采用JIT技术,对python代码进行动态编译
JPython:
python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
IronPython:
运行在微软.Net平台上的python解释器,可以把python代码编译.Net的字节码
.....

 

  Python2与Python3:

  Python2默认编码方式是ASCII码

  在文件首行:#-*- encoding:utf-8 -*-

  Python3默认编码方式是utf-8

四、Python优缺点

优点:

  1、Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

  2、开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。

  3、高级语言——当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节

  4、可移植性——由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行

  5、可扩展性——如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。

  6、可嵌入性——你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

缺点:

  1、速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右。其实在大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的。

  2、代码不能加密,因为Python是解释型语言,它的源码都是以名文形式存放的,当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。整个Python语言从规范到解释器都是开源的,理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。

如果项目要求源代码必须是加密的,那么一开始就不应该用Python来去实现。

  3、没有真正意义的多线程,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。

五、Python应用领域

  云计算: 云计算最火的语言, 典型应用OpenStack

  WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣..., 典型WEB框架有Django

  科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas

  系统运维: 运维人员必备语言

  金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测

  图形GUI: PyQT, WxPython,TkInter

 

Python入门

一、Python安装

windows:

  1.下载安装包 Windows x86-64 executable installer

    https://www.python.org/downloads/

  2.安装路径

    C:\Python35

  3.配置环境变量

    【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【系统变量框中 双击Path】--》【C:\Python35 添加到 变量值 末尾,用;分割】

4.测试

将C:\Python35中python.exe复制一份,命名为python3.exe

windows--》运行--》cmd 回车,在cmd程序中输入python3,进入交互环境说明成功

 

Linux:

  自带python,一般是python2

1 [root@localhost ~]# python
2 Python 2.7.5 (default, Apr 11 2018, 07:36:10) 
3 [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
4 Type "help", "copyright", "credits" or "license" for more information.
5 >>> exit()

  安装python3:

 1 [root@localhost ~]# wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tgz
 2 -bash: wget: 未找到命令
 3 [root@localhost ~]# yum install wget -y
 4 [root@localhost ~]# wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tgz
 5 [root@localhost ~]# tar xvf Python-3.5.3.tgz
 6 [root@localhost ~]# cd Python-3.5.3
 7 [root@localhost Python-3.5.3]# ls
 8 aclocal.m4    configure     Grammar     Lib      Makefile.pre.in  Objects  PCbuild        Python    Tools
 9 config.guess  configure.ac  Include     LICENSE  Misc             Parser   Programs       README
10 config.sub    Doc           install-sh  Mac      Modules          PC       pyconfig.h.in  setup.py
11 [root@localhost Python-3.5.3]# mkdir /usr/local/Python3.5
12 [root@localhost Python-3.5.3]# ./configure --prefix=/usr/local/Python3.5
13 checking build system type... x86_64-pc-linux-gnu
14 checking host system type... x86_64-pc-linux-gnu
15 checking for python3.5... no
16 checking for python3... no
17 checking for python... python
18 checking for --enable-universalsdk... no
19 checking for --with-universal-archs... no
20 checking MACHDEP... linux
21 checking for --without-gcc... no
22 checking for --with-icc... no
23 checking for gcc... no
24 checking for cc... no
25 checking for cl.exe... no
26 configure: error: in `/root/Python-3.5.3':
27 configure: error: no acceptable C compiler found in $PATH
28 See `config.log' for more details
29 [root@localhost Python-3.5.3]#yum install gcc-* -y
30 [root@localhost Python-3.5.3]# ./configure --prefix=/usr/local/Python3.5
31 [root@localhost Python-3.5.3]# make
32 [root@localhost Python-3.5.3]# make install
33 [root@localhost Python-3.5.3]# cd /usr/local/Python3.5/bin/
34 [root@localhost bin]# ls
35 2to3      idle3    pydoc3    python3    python3.5-config  python3.5m-config  pyvenv
36 2to3-3.5  idle3.5  pydoc3.5  python3.5  python3.5m        python3-config     pyvenv-3.5
37 [root@localhost bin]# ./python3.5
38 Python 3.5.3 (default, Nov 30 2018, 10:08:37) 
39 [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
40 Type "help", "copyright", "credits" or "license" for more information.
41 >>> 
42 
43 [root@localhost ~]# ln -s /usr/local/Python3.5/bin/python3.5 /bin/python3.5
44 [root@localhost ~]# python3.5
45 Python 3.5.3 (default, Nov 30 2018, 10:08:37) 
46 [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
47 Type "help", "copyright", "credits" or "license" for more information.
48 >>> 

二、Python运行

  在 /home/dev/ 目录下创建 hello.py 文件,内容如下:

1 print "hello,world"

执行 hello.py 文件,即: python /home/dev/hello.py

  python工作过程

    1、python 把代码读到内存  2、词法语法分析 3、放到编译器  ---》 生成字节码   4、执行字节码 ---》生成机器码  CPU执行

 

三、变量、常量

# 变量:就是将一些运算的中间结果暂存到内存中,以便后续代码调用

1 print(1+2+3+4)
2 print((1+2+3+4)*5)
3 
4 x=1+2+3+4
5 print(x)
6 y=x*5
7 print(y)
8 # x、y称为变量

  变量定义规范:

    1、只能以字母、数字、下划线组成,且不能以数字开头

    2、不能是python中的关键字:['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']

    3、变量具有可描述性

  定义变量的low方式:

    1、变量名为中文、拼音

    2、变量名过长

    3、变量名词不达意

  变量命名习惯

1 # 驼峰体
2 AgeOfOldboy = 56
3 NumberOfStudents = 50
4 
5 # 下划线
6 age_of_oldboy = 56
7 number_of_students = 50

 

1 a1 = 12
2 a2 = a1
3 a3 = a2
4 a2 = 100
5 print(a1,a2,a3)  #12,100,12 按行执行

 

#常量:一直不变的量

  约定俗成,不可更改,全部是大写字母

1 AGE_OF_OLDBOY = 56

 

四、用户交互 input

  1、等待输入,输入后继续往下走

  2、将你输入的内容赋值给前面的变量

  3、input出来的类型全部是str

1 name = input('请输入你的名字:')
2 age = input('请输入你的年龄:')
3 
4 print(name,age,type(age))
5 print('我的名字'+name,'我的年龄'+age+'')

五、注释

  单行注释 #

  多行注释 '''代码内容'''   """代码内容"""

  注释原则:

    不用全部加注释,只需要在自己觉得重要或者不好理解的部分加注释即可

    注释可以用中文或英文,但绝对不要用拼音

六、数据类型

数字类型:主要用于计算

  int(整形):整数

  float(浮点型):小数

str(字符串):

  凡是用引号引起来的全是字符串 

  字符串拼接:

    双方必须都是字符串,不能与数字或其他类型拼接

1 a = '但是'
2 b = '反对'
3 c = a + b  # 相加即是简单拼接
4 print(c)
5 print(c*10)  # 相乘就是复制自己多少次,再拼接到一起

bool(布尔):

  True False 不能加引号 用于判断

  type() 查看类型:

1 print(100)
2 print('100')
3 print(100,type(100))
4 print('100',type('100'))

七、格式化输出

%占位符,s string 字符串,d digit 数字,f float 小数

  %f 默认保存6位,%.3f 表示指定保留3位小数

%% 只是单纯的显示%

 1 # 格式
 2 msg ='''--------info of Alex Li---------
 3 Name  : ALex Li
 4 Age   : 19
 5 Job   : Teacher
 6 Hobbie: girl
 7 ------------end------------'''
 8 # 实现
 9 name = input('请输入名字:')
10 age = int(input('请输入年龄:'))
11 job = input('请输入工作:')
12 hobbie = input('请输入爱好:')
13 
14 msg ='''--------info of %s---------
15 Name  : %s
16 Age   : %d
17 Job   : %s
18 Hobbie: %s
19 ------------end------------''' %(name,name,age,job,hobbie)
20 print(msg)

八、运算符

  运算按种类分为算术运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算等

算术运算:

  以下假设变量:a=10,b=20

 

比较运算:

  以下假设变量:a=10,b=20

 

赋值运算:

  以下假设变量:a=10,b=20

 

逻辑运算:

1 print(1>1 or 3<4 or 4>5 and 2>1 and 9>8 or 7<6)
2 print(not 2>1 and 3<4 or 4>5 and 2>1 and 9>8 or 7<6)
3 print(1>2 and 3<4 or 4>5 and 2>1 or 9<8 and 4>6 or 3<2)
4 print(8 or 3 and 4 or 2 and 0 or 9 and 7)
5 print(0 or 2 and 3 and 4 or 6 and 0 or 3)
6 
7 # T F F 8 4

 

九、流程控制 if

单分支:

if 条件:

  满足条件后要执行的代码

1 print(555)
2 if 5 > 4 :
3     print(666)
4 print(777)

双分支:

if 条件:

  满足条件后要执行的代码

else:

  if条件不满足就走这条

1 if 4 == 3 :
2     print(666)
3 else:
4     print('777')

多分支:

if 条件:

  满足条件后要执行的代码

elif:

  上面的条件不满足就走这条

elif:

  上面的条件不满足就走这条

else:

  上面的条件都不满足就走这个

 1 score = int(input('输入分数:'))
 2 
 3 if score > 100:
 4     print('我擦,最高分才100。。。。')
 5 elif score >= 90:
 6     print('A')
 7 elif score >= 80:
 8     print('B')
 9 elif score >= 70:
10     print('C')
11 elif score >= 60:
12     print('D')
13 else:
14     print('呵呵,没及格。。。')

嵌套:

1 name = input('请输入名字:')
2 age = input('请输入年龄:')
3 if name == '小二':
4     if age == '18':
5         print(666)
6     else:
7         print(777)
8 else:
9     print('错了。。')    

 

 十、while循环

while 条件:

  循环体

 

1 # 死循环
2 count = 0
3 while True:
4     print("loop",count)
5     count += 1

#中止循环:改变条件,使其不成立

  break:跳出循环

  continue:结束本次循环,继续下一次循环

 

1 使用while 循环实现输出 1-100 内的所有奇数;
2 
3 count = 0
4 while count < 101:
5     if count % 2 == 1:
6         print(count)
7     count += 1

 

1 count = 0
2 while count <= 100:
3     print("loop",count)
4     if count == 5:
5         break
6     count += 1
7 
8 print("----out of while loop----")
1 count = 0
2 while count <= 100:
3     count += 1
4     if count > 5 and count < 95:
5         continue
6     print("loop", count)
7 
8 print("----out of while loop----")

 

while ... else

  当while循环正常执行完,中间没有被break中止的话,就会执行else后面的语句

 

1 count = 0
2 while count <= 5:
3     count += 1
4     print("loop", count)
5 else:
6     print("循环正常执行完了")
7 print("----out of while loop----")

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/wuyinglianjianjue/p/10028414.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值