python基础
Posted xiaofeiweb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础相关的知识,希望对你有一定的参考价值。
目录
前言
程序
- 算法 + 数据结构 = 程序
- 数据是一切程序的核心.
- 数据结构是数据在计算机中的类型和组织方式
- 算法是处理数据的方式,算法有优劣之分
写程序难点
- 理不清数据
- 搞不清处理方法
- 无法把数据设计转换成数据结构,无法把处理方法转换成算法
- 无法用设计范式来进行程序设计
- 时间程序皆有bug,但不会debug
编译型语言和解释型语言
计算机高级语言按照程序的执行方式可以分为编译型语言和解释型语言.
编译型语言
编译型语言是指代码写好以后,需要使用专门的编译器进行编译,一次性将代码转换成特定的系统平台(操作系统)可以识别并运行的机器语言(机器码).
- 优点:编译器一般会有预编译的过程对代码进行优化。在运行代码之前,对其编译只做一次,生成一个系统可直接运行的机器码文件,运行时不需要再次编译,所以编译型语言的程序执行效率高,可以脱离语言环境独立运行。
- 缺点:编译之后如果需要修改,就需要整个模块重新编译,编译的时候根据对应的运行环境(操作系统)生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
c, c++, Go, Swift, Object-C, Pascal...
解释型语言
解释型语言是指代码写好以后,需要使用该语言的解释器将代码转换成一种易于执行的中间代码(字节码),然后再将字节码转换成特定的系统平台可识别的机器码.也可以这样理解:每次执行解释型语言的程序都需要进行一次编译,才可以放到特定的系统中去运行。
- 优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了对应平台的解释器,具有灵活性,修改代码的时候直接修改源代码,然后做一下转换工作就可以,可以快速部署,不用停机维护。
- 缺点:每次运行的时候都要解释转换一遍,不能生成系统平台直接可运行的程序,性能上不如编译型语言,常见解释型语言比如JavaScript, Python, Ruby, PHP, Perl, Eriang...
举个实际的例子
A和B是两个国家的人,因为语言不通无法交流。如果想要彼此交流,听懂对方的语言,就需要翻译。编译型语言就是A学会了B的语言,交流的时候,直接将自己的想法用B的语言说出来,这样B就能直接听懂,反之易然;解释型语言呢,就是A自己找了一个懂得多国语言的翻译官,想要表达自己的意思,需要先跟这个翻译官说,然后这个翻译官在把A的意思,翻译给B听,由于中间多了一个翻译的过程,速度上要比编译型语言慢一些,但是好处也是有的,就是这个翻译官懂得多种语言,A要和其他国家的人交流,直接找他就行,但是编译型语言呢,你要想跟C交流,首先自己要学会C的语言才行,大概就是这个意思吧。
面向对象和面向过程
面向对象
以数据为重心,所有的处理代码都是围绕数据展开,数据即对象;就是一件事‘让谁来做’,这个‘谁’就是对象,他要怎么做是他自己的事,反正最后一群对象合力能把这件事做好就行了;比如,自己组装电脑.
面向过程
以指令为中心,由指令处理数据,这些指令构成了过程;就是一件事该怎么做,由谁来做我们不管,但是你必须按照我们规定的步骤去做就行了;比如自己造电脑.
初识Python
简介
- python创始人是Guido vanRossum(吉多.范罗苏姆),于1989年开发,1991年公开发行.
- python是一种解释型、面向对象(也支持面向过程)、动态数据类型的高级程序设计脚本语言,语法简洁清晰,采用缩进来定义语句块,具备来及自动回收功能,能够自动管理内存空间使用,python虚拟机本身几乎适用于所有系统,使用诸如py2exe、PyPy、Pyinstaller之类的工具可将源代码转换成脱离python解释器执行的程序,这里我们主要参考的是CPython,是基于C语言开发的一种自由编程软件.
==python核心思想:一切皆对象==
Python的分类
- Cpython
Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。 - Jyhton
Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。 - IronPython
Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似) - Shed Skin
Python编译器,能够将python代码转换成优化的C++代码 - PyPy(特殊)
Python实现的Python解释器,将Python的字节码字节码再编译成机器码。
Python语言的动态编译器,是Psyco的后继项目
可运行在linux,MacOSX(32),Windows(32)平台中 - 其他
RubyPython、Brython ...
python能做什么
- python常用领域
自动化运维、自动化测试、大数据分析、爬虫、Web 等。 - 使用python的公司
Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等 - 脚本
自动执行常见的管理任务,如在系统中新增用户,将文件上传到网站,在不使用浏览器的情况下下载网页等。 - 网站开发
作为快速创建动态网站的工具,Django,Bottle,Zope等众多Python项目深受开发人员的欢迎。 - 文本处理
Python在字符串和文本文件处理方面提供了强大支持,包括正则和Unicode 科学计算
Python科学计算库,提供了用于统计,数学计算和绘图的函数.Python的优缺点
优点
- 简单易学,入门容易。
- 高级语言,无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
- 可移植性,你的所有python程序无需修改就几乎可以在市场上所有的系统平台上运行。
- 可扩展性,如果你需要你的一段关键代码运行的更快或者希望某些算法不公开,你可以把你的部分程序- 用c或c++编写,然后在你的python程序中使用它们。
可嵌入性,你可以把python嵌入你的c/c++程序,从而向你的程序用户提供脚本功能.
缺点
- 速度慢
- 代码不能加密
线程不能利用多cpu问题
python的语言类型
动态语言,强类型语言
静态编译语言
- 实现声明变量类型,类型不能再改变;
- 编译时检查
动态编译语言
- 不用事先声明类型,随时可以赋值为其他类型
- 编程时不知道是什么类型,很难推断,只有在运行时检查
强类型语言
- 不同类型之间操作,必须先强制类型转换为同一种类型
弱类型语言
- 不同类型间可以操作,自动隐式转换
python的运行方式
交互式解释器
直接启用python自带的解释器,也就是一个命令行窗口,可以直接执行python代码,一般作为调试代码用,并且,执行完以后,难以再次运行.
python程序文件
将python代码保存到一个文件中,并以.py结尾,可以方便多次运行。
python的程序可分解成模块,语句,表达式和对象,它们的关系是:
==程序由模块构成,模块包含语句,语句包含表达式,表达式建立并处理对象==
例如:
1+1,是某件事,即表达式
print(‘1+1‘),是做某件事,即语句。
新建一个名字为test的.py文件,内容如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import platform
print(platform.uname())
# 说明
# 第一行为shebang,指定执行解释器
# 第二行指定编码格式,python2默认为ascii
# 第三行通过import来导入一个python的模块platform
# 第四行打印platform模块的uname方法的执行结果
- 模块导入
import(sys)
import(os)
- 全局变量定义
debug = True
- 类定义
class FooClass(object)
pass
a = FooClass() # 类的实例化
- 函数定义
def test():
print('hello,world.')
test() # 执行函数
- 主程序
if __name__ == '__main__':
"""
右键运行,会先运行此处
"""
test()
Python编程风格
注释
==不要缺少注释,也要避免过度注释==
单行注释采用#开头
多行注释采用三个单引号(‘‘‘ ... ‘‘‘)或三个双引号(""" ... """)
注释也可以用在行的结尾,用来表示注释信息.
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#FileName:hello.py
#这是单行注释
'''
这是多行注释
这是多行注释
这是多行注释
'''
"""
这是多行注释
这是多行注释
这是多行注释
"""
.pyc文件
执行python代码时,如果导入了其他的.py文件,那么在其执行过程中会自动生成一个同名的.pyc文件,该文件就是python解释器编译后产生的字节码文件,代码经过编译可以产生字节码,字节码通过反编译也可以得到代码。
行和缩进
- 缩进相同的一组语句构成一个代码块
- 首行以关键字开始,如if,while等,以冒号结束
- python使用缩进来分割代码组,同一代码组的代码行必须严格左对齐,否则会造成语法错误
- python的代码块使用缩进来控制类、函数及其他逻辑判断的模块,这也是python不同于其他语言的地方.
name = 'Jerry'
def printName(a):
print(a)
num = 3
print(num)
# 执行结果是:
3
==注意==
- 行首缩进的空格数量是可变的,但必须保证所有的代码块语句,缩进的空格数是一致的,建议在每个缩进层次使用单个制表符或两个空格或四个空格,切记不能混用.
- 同一行放置多个语句,以分号‘;‘作为分隔符
- 统一缩进4个字串
- 标识符名称一般要做到见名知义
以上是关于python基础的主要内容,如果未能解决你的问题,请参考以下文章