Python(一):基础不牢,地动山摇

第1章 Python介绍

1.1 python应用领域

  python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域,目前业内几乎所有大型互联网企业都在时用python。

1.1.1 目前python主要领域

  • 云计算:云计算最火的语言,典型应用openstack。
  • WEB开发:众多优秀的web框架,众多大型网站均为python开发,典型web框架Django。
  • 科学运算、人工智能:典型开发库numpy、scipy、matplotlib、enthought、libarys、pandas等。
  • 系统运维:自动化开发。
  • 金      融:量化交易、金融分析,不仅仅在用python,还在逐年提高,原因就是作为动态语言的python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c、c++、java,尤其是擅长策略回测。

1.2 python是一门什么样的语言?

  编程语言主要从以下几个角度进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言,每个分类代表的意思如下:

1.2.1 编译和解释的区别

  因为计算机不能直接认识并执行我们写的语言代码,它只能认识机器语言,既0、1代码二进制的形式。

  1、编译器

   是吧源代码的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以计算机语言来运行此程序,速度很快。

   举个栗子:中国人和美国人对话,由于语言的不通,需要一个翻译,中国人有钱就雇一个翻译来进行翻译语言,即这个翻译就是编译器,中国人每说一次事后,翻译官是将中国人所有说的话提前翻译好成英文,并写在文件中,然后交给美国人看,这样美国人就很快的并且以母语的形式方便看完。这就叫编译型,一次性提前编译好。

  2、解释器

   解释器是在执行程序时,才一条一条的解释成机器语言给计算机逐一执行,所以运行速度相对编译后的程序运行的慢。

   举个栗子:还是一个中国人和美国人,在交流的时候在现场有个翻译官,中国人说一句,翻译官翻译一句,即翻译官就是解释器。

1.2.2 低级语言和高级语言

  1、低级语言

   一句话说,低级语言就是面向机器、更接近底层的语言。

   即0、1序列表示的机器指令都是用来符号助记,这些与机器指令一一对应的助记符就时汇编指令,无论是机器指令还是汇编指令都是面向机器的,统称为低级语言。

  2、高级语言

   一句话说,高级语言就是面向人类思维逻辑开发的语言。

   抽象程度大大提升,需要经过编译成特定机器的汇编代码才能执行,一条高级语言的语句往往需要若干机器指令来完成,高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的,那具体的说,要将高级语言编译到什么程度呢?这要跟编译技术有关了,既可以编译成直接可执行多目标代码,也可以编译成一种中间表示,然后拿到不同的机器和系统上执行,这种情况通常又需要支撑环境,比如解释器或虚拟机的支持,java程序编译成bytecode,再由不同平台的虚拟机执行就是很好的例子,而通过编译器解释的到多目标代码去适应不同的机器,从这个意义上来说,通过交叉汇编,一些汇编程序也可以获得不同机器的可移植性,但这种途径的可移植性远远不同高级语言来的方便和实用性大。

  3、低级语言与高级语言小结

  • 低级语言是更接近底层的语言。
  • 高级语言是更接近人类思维逻辑的语言。
  • 计算机只识别0、1代码,而人类有自己的语言,因此需要编译器或解释器来编译成0、1代码或者中间语言。

1.2.3 动态语言和静态语言

   通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。

  1、动态类型语言

   动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来,python和ruby就是这种典型的动态类型语言。

  2、静态类型语言

   静态类型语言与动态类型语言刚好相反,它的数据类型在编译期间检查的,也就是说在程序时要声明所有变量的数据类型,c、c++是静态类型语言的典型代表,其他的静态类型语言还有c#、java等。

1.2.4 强类型定义语言和弱类型定义语言

  1、强类型定义语言

   强制数据类型的语言,也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么他就永远是这个类型,举个栗子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理,强类型定义语言是类型安全的语言。

  2、弱类型定义语言

   数据类型可以被忽略的语言,它与强类型定义语言相反,一个变量可以复制不同数据类型的值。

1.2.5 python总结

  python时动态语言,强类型定义语言。

1.3 python的优缺点

1.3.1 python的优点

  1、简单明确

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

  2、开发效率非常高

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

  3、高级语言

   当你用python语言编写程序的时候,你无需考虑诸多如何管理你的程序使用等内存一类的底层细节。

  4、可移植性

   由于它对开源本质,python已经被移植到许多平台上,(经过改动使它能够工作在不同平台上。)

  5、可扩展性

   如果你需要你的一段关键代码运行的更快活着希望某些算法不公开,你可以把你的部分程序用c或者c++编写,然后再你的python程序中使用。

  6、可嵌入性

   你可以把python嵌入你的c/c++程序中,从而醒你对程序用户提供脚本功能。

1.3.2 python缺点

  1、速度慢

   python的运行速度相比c语言确实慢很多,跟java相比也要慢一些,但是python的慢一般用户是无法直接感知到的,并且现在不断的完善。

  2、代码不能加密

   因为python是解释性语言,它的源码都是以明文对形势存在的。

  3、线程问题

   线程不能利用多cpu问题,GIL(global interpreter lock)即全集解释器锁,是计算机程序设计语言解释器用语同步线程的工具,使得任何时刻仅有一个线程在执行,python的线程时操作系统的原成线程,在linux上为pthread,在windows上为win thread,完全由操作系统调度线程的执行,一个python解释器进程内有一条主线成,以及多用户程序执行线程,即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行,关于这个问题的折衷解决方法。

1.4 python解释器

   当我们编写python代码时,我们得到的是一个包含python代码的以.py为扩展名到文本文件,要运行代码,就需要python解释器去执行.py文件。

   由于整个python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写python解释器来执行python代码,事实上,确实存在很多种python解释器。

  1、CPython

   当我们从python官方网站下载并安装好python2.7后,我们就直接获得来一个官方版本的解释器CPython,这个解释器使用c语言开发,所以叫cpython,在命令行训醒python就是启动cpython解释器。

   cpython是使用最为广泛的python解释器。

  2、IPython

   IPython是基于cpython之上多个交互式解释器,也就是说,IPython只在交互式上有所增强,但是执行python代码的功能和cpython是完全一样的,好比很多国家浏览器虽然外观不同,但内核其实都是调用了ie。

  cpython用>>>作为提示符,而IPython用In[序号]:作为提示符。

  3、pypy

   pypy是另一种python解释器,他的目的是执行速度,pypy采用jit技术,对python代码进行动态编译(注意不是解释),所以可以显著提高python代码到执行速度。

  绝大部分python代码都可以在pypy下运行,但是pypy和cpython有一些是不同的,这就导致形同的python代码在两种解释器下执行可能会有不同的结果,如果你的代码要放在pypy下执行,就需要了解pypy和cpython的同点。

  4、Jython

   Jython是运行在java平台上的python解释器,可以直接把python代码编译成java字节码执行。

  5、ironpython

   ironpython和jython类似,只不过是运行在微软.net平台的python解释器,可以直接把python代码编译成.net字节码。

1.4.1 python解释器小结

  python的解释器很多,但使用最广泛的还是cpython,如果要和java或者.net平台交互,最好的办法不是用jython或者ironpython,而是通过网络调用来交互,确保各程序之间的独立性。

第2章 Python简单基础

2.1 变量

  1、变量的定义

   变量是一个在内存存储的数据。

  2、变量的意义

   为什么要有变量,因为他保存程序的中间结果或状态,以供应后面的代码进行调用。

2.1.1 变量的要求定义

  1、等号右边永远是变量名

  2、打印字符串时使用双引号

  3、打印时的分隔符使用逗号

  4、在变量中数字不需要加引号,加引号就变成字符串了

  5、python是由上到下逐行(hang)处理执行的,因此变量要先定义好再调用

2.1.2 定义变量的方式

  1、定义变量简洁化标准:强烈推荐“_”下划线,其次也可以是用驼峰表示法。

  2、变量不可全部大写,全部大写为常量,常量是永远不变的变量,如果程序中有永远不变的量,可以使用大写来暗示别人或提醒自己。

  3、变量不能以数字开头,数字可以在变量名的中间。

  4、变量名不能使用特殊字符,仅除下划线。

  5、不能使用关键字作为变量名,关键字就是程序内部语法,如:print等。

2.1.3 变量赋值实例

  1、正确打印

1 #!/usr/bin/env python3
2 name = "chenx"
3 name2 = "oldboy"
4 print name,name2
输出结果:
chenx oldboy

  2、错误打印

1 #!/usr/bin/env python3
2 name = "chenxin"
3 name2 = "oldboy"
4 print "name,name2"
输出结果:
name,name2

  备注:变量饮用不可使用引号引用。

2.2 字符编码

  由于计算机只能识别0、1代码,因此字符编码由2**8表示,每个字符有8个比特位,一个二进制数字占1比特bit,因此一个字符有8比特,即1字节,加入各国符号后出现了万国编码(unicode),每个字符有4字节,最后演变成utf-8,可变长的编码集,英文按照ascll存储,一个字符为1字节,一个中文存3字节,欧洲2字节。

  python的开发规范,每行不能超过80个字符。

  python2默认不支持中文,python3版本以上使用了utf-8,默认就支持中文,如果是python2必须在代码中做字符集的声明:

1 #!/usr/bin/env python2
2 # _*_ coding: utf-8 _*_
3 print ("你好")

2.3 交互式输入

2.3.1 python3.0中

1 #!/usr/bin/env python
2 name = input("what is your name:")
3 print ("holle" + name)

2.3.2 python2.0中

  raw_input就是3.0中点input。

  但是在2.0中也有一个input,这个input不能输入字符串,只能输入变量和数字。(没什么卵用。)

2.3.3 格式化输出占位符

#!/usr/bin/env python
name = input("your name :")
age = int(input("your age :"))
job = input("your jpb :")

meg = ‘‘‘
这是%s的基本信息。
-------------------
name :   %s
age  :   %d
job  :   %s
---------end-----
‘‘‘ % (name,name,age,job)
print(meg)

  小结:

  %s:表示输出字符串

  %d:表示输出整数

  %f:表示输出浮点数(小数)

2.4 常用模块使用

2.4.1 getpass

#!/usr/bin/env python
import getpass
username = input("usename:")
password = getpass.getpass("password:")
print(username,password)

  备注:getpass模块使密码变成不可见形式体现,但是在pycharm中不好使,只能在命令行中使用。

2.4.2 os

  1、模块方法

   os.system()   :直接调用系统命令

   os.mkdir()    :在python脚本或进入pyrhon的目录下创建目录

   os.popen("df -h").read()  保存输出结果

  2、模块实践

#!/usr/bin/env python3
import os
os.mkdir("python_mkdir")
os_system = os.system("ls")
print(os_system)

os_popen = os.popen("df -h").read()
print(os_popen)
输出结果:
{0:21}~/s15/scripts ? python3 os.py
1.txt        openfile.py    os.py        python_mkdir    test_1.py
0
Filesystem      Size   Used  Avail Capacity  iused  ifree %iused  Mounted on
/dev/disk1     112Gi  109Gi  2.9Gi    98% 28568128 753598   97%   /
devfs          182Ki  182Ki    0Bi   100%      630      0  100%   /dev
map -hosts       0Bi    0Bi    0Bi   100%        0      0  100%   /net
map auto_home    0Bi    0Bi    0Bi   100%        0      0  100%   /home

2.4.3 sys

  1、模块方法

   sys.path  :查看python默认存放模块的路径(全局环境变量)

  2、模块实践

#!/usr/bin/env python3
import sys
print(sys.path)
直接结果:
{0:26}~/s15/scripts ? python3 sys.py
[‘/Users/cx/s15/scripts‘, ‘/Library/Frameworks/Python.framework/Versions/3.5/lib/python35.zip‘, ‘/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5‘, ‘/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin‘, ‘/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload‘, ‘/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages‘]

2.4.4 python命令行补全模块

  1、for mac

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

  2、for linux

#!/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

  备注:将自定义模块放在统一的python默认环境变量下,并随便命名即可,以备后面方便调用。

2.5 if判断语句

  1、简单用户登录判断

#!/usr/bin/env python
user = ‘chenx‘
passwd = ‘cx199222814‘

username = input("username:")
password = input("password:")

if user == username:
    print("username is correct...")
    if password == passwd:
        print("welcom to...")
    else:
        print("密码错误")
else:
    print("用户名错误"

  2、登录优化代码

#!/usr/bin/env python
user = ‘chenxin‘
passwd = ‘cx1994814‘

username = input("username:")
password = input("password:")

if user == username and password == passwd:
    print("欢迎使用")
else:
    print("用户名密码错误")

  3、猜年龄代码(联合判断)

#!/usr/bin/env python
age = 21

age_num = int(input("input your age:"))

if age == age_num:
    print("回答正确")
elif age > age_num:
    print("猜小了")
else:
    print("猜大了")

2.6 for循环

  1、猜年龄循环不能超过三次

#!/usr/bin/env python
age = 21
for i in range(10):
    if i <3 :    #循环判断不能超过三次
        age_num = int(input("input your age:"))
        if age == age_num:
            print("回答正确")
            break
        elif age_num < age:
            print("猜小了")
        else:
            print("猜大了")
    else:
        print("猜测次数太多,你太笨了。。。")
        break

  2、猜年龄代码优化v2

#!/usr/bin/env python
age = 21
counter = 0
for i in range(10):
    print("---->counter:",counter)
    if counter <3: #循环判断不能超过三次
        age_num = int(input("input your age:"))
        if age == age_num:
            print("回答正确")
            break #终止整个循环,
        elif age > age_num:
            print("猜小了")
        else:
            print("猜大了")
    else:
        conuter_confim = input("你是否确认继续猜y/n?")
        if conuter_confim == "y":
            counter = 0
            continue #跳出当次循环
        else:
            exit("再见笨蛋")
    counter += 1 #counter = counter +1
时间: 2024-08-03 16:46:11

Python(一):基础不牢,地动山摇的相关文章

问道python之基础篇【二】python入门

问道python之基础篇[二] Python入门 1.python的工作过程 python解释器把源代码转换为字节码的中间形式,然后再把它翻译成机器使用的机器语言并运行. 2.pyc文件 2.1.什么是pyc文件 执行python代码时,如果导入了其他的.py文件,那么在执行过程中会自动生成一个与其同名的.pyc文件,该文件就是python解释器编译之后产生的字节码. ps:代码经过编译可以产生字节码:字节码通过反编译也可以得到代码. Pyc文件一般由3个部分组成: 最开始4个字节是一个Maig

老少皆宜的密大Python零基础入门

Who are we? MTech是一个由密歇根大学 工程院中 (AE/ME)的中国学生组成的的一个专注于专业知识和技能的分享和交流的俱乐部.我们创建这个俱乐部旨在促进工程专业中国学生之间技术层面的交流,搭建桥梁促进知识的分享和传播.请关注我们的微信公众号("密大MTech")和我们的网站(mtechmae.webstarts.com)了解关于我们的更多信息. What is Python? Python是一种面向对象.直译式的编程语言.它的语法简单,并包含了功能完备的库,适合解决很多

python/HTML基础

---恢复内容开始--- python/HTML基础 HTML: 超文本标记(标签)语言 (以<>扩起来的都是标签语言,放入标签里的不仅仅是文本)一套语言规则 浏览器的渲染顺序是从上到下,从左到右 不同的浏览器,对同一标签可能会有不完全相同的解释(兼容性)至今已经解决的差不多了 .html或htm   静态网页文件扩展名后缀 标签可以进行嵌套,但是不能进行交叉嵌套 HTML 不是一种编程语言,而是一种标记语言,HTML使用标记标签来描述网页 HTML结构: <html></h

Python服务器开发二:Python网络基础

Python服务器开发二:Python网络基础 网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. HTTP是高层协议,而TCP/IP是个协议集,包过许多的子协议.包括:传输层的 FTP,UDP,TCP协议等,网络层的ip协议等,高层协议如HTTP,telnet协议等,HTTP是TCP/IP的一个子协议. socket是对TCP/IP协议的封装和应用(程序员层面上).也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如

问道python之基础篇【一】 认识python

问道python之基础篇[一] 认识python 1.python的简介 1.1.什么是python? Python是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python语法简洁清晰,特色之一是强制用空白符作为语句缩进. Python具有丰富和强大的库.它常被昵称为胶水语言,能够用其他语言制作的各种模块(尤其是C++)很轻松地联结在一起. 1.2.python的特点 简单,易学,免费.开源,高层语言,移植性,

Python学习基础篇第一篇——快速入门(适合初学者)

一.Python学习基础篇第一篇--(快速入门) 建议从Python2.7开始学习,Python2.7可以支持扩展大量的第三方类库,是目前比较成熟的版本 编写代码的软件推荐将python自带的IDLE和PyCharm集成IDE结合起来使用 1.1 Python命令行 Python命令行将以 >>> 开始,比如 >>>print 'Hello World!' 对于验证简单的命令可以在python自带的IDLE中完成  1.2 在Python自带的IDLE写一段小程序 在所

python 网络基础

服务器客户端模式,服务器存在唯一目的是:等待客户的请求, 一.套接字 unix套接字,AF_LOCAL,地址家族,缩写:AF,AF_LOCAL将代替AF_UNIX,很多时候两者等价 基于网络的套接字,AF_INET,AF_INET6 AF_NETLINK,无连接 python只支持AF_UNIX,AF_NETLINK,AF_INET家族 一种面向连接的:tcp协议,SOCK_STREAM 一种面向无连接的:udp协议,SOCK_DGRAM socket创建套接字,语法如下: socket(soc

Python爬虫基础之requests

一.随时随地爬取一个网页下来 怎么爬取网页?对网站开发了解的都知道,浏览器访问Url向服务器发送请求,服务器响应浏览器请求并返回一堆HTML信息,其中包括html标签,css样式,js脚本等.我们之前用的是Python标准基础库Urllib实现的, 现在我们使用Python的Requests HTTP库写个脚本开始爬取网页.Requests的口号很响亮“让HTTP服务人类“,够霸气. 二.Python Requests库的基本使用 1.GET和POST请求方式 GET请求 1 import re

Python编程基础

Python编程基础 数据类型 None 值 整型 浮点型 布尔类型True,False 字符串 元组 tuple(),有序,不可变例:t = (1,)t = (1,'Hello',1.0,True) 列表 list[],有序,可变 例:l = [1,'Hello',1.0,True] 字典 dict{},键-值对,无序例:d = {65:'A',48:0,'a':97,'Hello':'World'} 操作符 数学操作符 + - * / 除 // 整除 % 取模 ** 指数 比较操作符 ==