python修炼第一天

Python修炼第一天

新的开始:不会Python的运维,人生是不完整的。 为了我的人生能够完整,所以我来了!今后跟着太白金星师傅学习功夫,记录一下心得,以便日后苦练。

一 Python的历史:

Python是一种面对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum(江湖人称龟叔)于1989年发明,第一个公开发行版发行于1991年。

1991年第一个Python编译器诞生,使用C语言实现的。并能够调用C语言的库文件!

需要注意的是:2008年 开发了2个版本 Python2.6 与 Python3.0   这是由于 Python2X 源码重复,不规范。所以就开发了Python3,整合了源码,更清晰简单优美。并决定到2020年就不再支持Python2X的版本 。

二 Python的应用:

目前主要领域: 云计算、WEB开发、科学运算、人工智能、系统运维、金融等。

公司应用:谷歌:Google App Engine 、谷歌爬虫 谷歌广告等。

      CIA:美国中情局网站是Pthon开发的。

      NASA:美国航天局大量使用Python进行数据分析。

      YouTube:世界上最大的视频网站就是用Python开发的。

      Dropbox:美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载    

      RedHat:世界最流行的Linux发行版的YUM包管理工具是由Python开发的。         

      豆瓣:公司几乎所有的业务都是通过Python开发。

      知乎:国内最大的问答社区,通过Python开发

      除了上面的还有 金山,搜狐,百度,阿里,淘宝,土豆,新浪,腾讯等等公司都在用。

三 Python的分类:

语言要分为两类:编译型   解析型

编译型: 将代码一次性全部编译成二进制(010101),然后在运行。

    缺点:开发效率低。不能跨平台。

    优点:执行效率高。

    代表:C  C++

解析型: 当程序开始运行时,先编译成字节码,然后交给解释器(虚拟机)一行一行解析,执行。

    缺点:执行效率低

    优点:开发效率高,可以跨平台

    代表:Python

Python解析器主要有:

  CPython: 这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器。

  IPython: IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。

         好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

  PyPy : PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

      绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。

      如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点

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

  IronPython: IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

四 python优缺点:

优点:

  1.开发效率高:是因为拥有强大的第三方库里,想要实现计算机功能可以网上找一些对应的功能模块导入使用。

  2.高级语言:当你写程序的时候,你不用考虑如何管理你的程序使用的内存等类似的底层细节。

  3.可移植性:开源,所以允许移植到多个平台,所以,如果小心避免使用依赖系统的特性,那么这个程序无需修改就几乎可以运行在任何平台上。

  4.可扩展性:可以吧部分程序用C或C++语言编写 然后嵌入到Python程序中使用

  5.课嵌入性 :可以吧Python嵌入到C或C++程序中,给程序用户提供脚本功能。

  6.简单易学:优雅,明确,简单,初学者容易入门。深入下去可以编写非常复杂的程序。

缺点:

  1.速度慢:相比较C要慢很多。跟JAVA也要慢一些,但是这个对于一般的用户也是无法感知的,比如一个C程序运行只用了0.01S 。

  Python运行需要用0.1S,C比Python快了10倍。但是人是无法用肉眼感知的。因为正常人感知最小单位是0.4S左右,所以大多数情况下

  Python都可以满足程序运行速度需求了。

  2.代码不能加密:因为Python是解析型语言,他的源码都是明文形式存放。如果要求代码是加密的,哪就不应该使用Python。

  3.线程不能利用多个CPU:这个问题以后再说。。。

五 变量

变量:将程序中运行的中间结果暂时存放到内存中,以后便程序调用。

5.1 声明变量:

  user = "jack"

     上面代码意思就是声明一个变量,变量名为user, 他的值为“jack”。

5.2 变量的定义:

  1 变量是由数字 字母 下划线任意组合。 并且变量不能以数字开头。

  2 变量不能是Python中的关键字。

  3 变量应具有描述性。

5.3 变量定义规则:

  1 变量不能使用中文,拼音。

  2 变量不能过长。

  3 变量名词不达意。

5.4 变量的写法

  变量一般分为驼峰 与 下划线。

   驼峰:

    UserName = "jack"

   下划线:

    user_name = "tom"

  推荐 下划线

六 常量

6.1 常量定义:一直不变的量就是常量。

  比如 π 、身份证号、 中国成立日期等。

6.2 常量定义规则:

  约定俗成 全部大写字母,同时放在整个文件最上面 那就叫常量。

  比如:

    NEWCHINA = 1949

    while True。。。。

      。。。。。

七 注释

7.1 单行注释 #号:

  比如:

    # 这是个用户名变量

    n = "jack"

7.2 多行注释 ''' ''' 或 """ """

  比如:

    '''

    a = "bbb"

    print(a)

    '''

  比如:

    ''''''

    b = "ccc"

    print(b)

    ''''''

八 基础数据类型

8.1 初识数字与字符串类型:

  int 数字: 计算加减乘除取余等   比如 666  (不加引号)  数字类型还有float浮点型 与复数型。

  str 字符串:用引号引起来的就叫字符串 "666"    同时有单引号,双引号,与多引号。    

    单引号与多引号没有区别,只是在字符中有单引号意思的字符出现时需要使用双引号

    多引号是在多行字符串的情况下使用:

      message = '''

      我同桌不是人,

      我同桌不是      

      '''

8.2 查看类型:

  可以通过type方法查看数据类型:

    print(666,type(666))

    print("666",type("666"))

8.3 字符串拼接:

  数字类型可以进行加减乘除取余等操作,字符串也可以进行加与乘两种运算。单只能是加于乘。

  通过加可以实现字符串拼接:(注意字符串加运算需要两边都是字符串类型。)

    a = "老男孩"

    b = "最好的培训机构"

    c = a + b

    print(c)   结果就是 “老男孩最好的培训机构”

  乘就是用字符串乘数字:

    print("坚强"*8)

    输出为:坚强坚强坚强坚强坚强坚强坚强坚强

8.4 布尔值bool: True,False

  就两个值 ,一个True(真),一个False(假), 主要用记逻辑判断:

    print(bool(1>2))   结果为False   

九 用户交互 Input

  把用户输入的值赋给一个变量(接收用户输入)。然后可以把变量交给程序进行下一步处理。

  注意:input 出来的数据类型全部都是字符串。 如果是数字需要进行数据类型转换: age = int(input("输入您的年龄:"))

     同时如果要字符转换为数字格式 需要字符串都是数字。数字转换为str字符 可以随便转换。

    usernam = inport("请输入您的账号:")

    password = inpurt("请输入您的密码:")

    print(username,password)

十 if

10.1 if基本语句

  主要是进行条件判断。判断布尔值为真或假。来进行流程的控制。

  比如:

    if 条件1:

      结果

    elif 条件2:

      结果

    else:

      结果

10.2 多分支例子:

    num = int(input("输入数字选择:1.召唤神龙,3.召唤苍井空,5.召唤奥特曼,其他退出。"))

    if num == 1:

      print("神龙在路上")

    elif num == 3:

      print("兄弟该补肾了")

    elif num == 5:

      print(”你先给我来个怪兽啊“)

    else:

      print(”会见~“)

  注意: 使用多分支的时候,代码是从上到下依次判断,只要满足一个,就不会再往下走。所以,进行在编写分支条件的时候,要按照从上到下的逻辑顺序来编写。

10.3 缩进:

  Python在判断条件后下一行就需要进行缩进。注意是强制缩进,如果不缩就会报错! 缩进一般使用TAB键,缩进主要就是要为了让程序知道,每段代码依赖哪个条件。

  如果不通过缩进来区分,程序不会知道当条件成立后,去执行哪些代码。

  

10.4 缩进原则:

  1.*代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进

  2.同一级别的代码,缩进必须一致

  3.官方建议缩进用4个空格,当然也可以用2个,建议按照官方的统一来。

十一 while

11.1 while基本语句:

  主要是做程序循环的功能:

  条件如果为真,那么程序就会一直循环下去,如果条件为假,就退出。

    while True:

      print("aa")

      print("bb")

      print("cc")

  这个例子会一直循环下去:循环print一圈后再回到while语句第一行,判断while条件是否还是True(真) ,如果是True(真),哪么就继续往下走。

11.2 循环终止语句:

  如果在循环过程中,因为一些原因,不想循环了,那么就需要用到break 与continue

  break: 终止整个循环:

    while True:

      print(a)

      break

  程序从上向下执行,先输出了一个a ,然后遇到break就终止整个循环了。 所以最终只有一个字符a。

  continue:跳出当前循环:

    for i in range(1,11):

      if i == 5:

        continue

      print(i)

 如果等于5就跳出当前循环,所以最后的结果没有5 。结果:1,2,3,4,6,7,8,9,10  。

11.3  while else

  Python中还有while else 这个语句,

  如果while 循环被break打断,那么就不执行else后面的语句,如果没有被break打断就会执行else后面的语句:

   程序没有被break打断:

     a = 1

    while a < 3:

      print(a)

      a +=1

    else:

      print("程序执行完毕!")

  输出结果:  1    2   程序执行完毕 !

  while循环全部执行完毕输出1  2 ,但是没有被break跳出,那么就会继续执行else后面的程序。

  程序被break打断:

    while True:

      print("aaaa")

      break

    else:

      print("程序执行完毕")

  输出结果: aaaaa

  程序循环遇到break跳出,while虽然也全部执行完了。但是因为被break打断的,所以就不会执行else后面的程序了。

十二 格式化输出

12.1 占位符:

  % 为占位符,表示这个地方需要使用格式化输出

12.2  格式化类型:

  s 代表字符串类型输出

  d 代表数字类型输出

12.3 格式化实现方法一:

   name = input("输入您的姓名:")

   age = input("输入您的年龄:")

   sex = input("输入您的性别:")

   job = input("输入您的工作:")

   msg = '''

   ---------- info to %s -----------

   Name : %s

   Age: %d

   Sex: %s

   Job: %s

   ---------------------------------

   '''%(name,name,int(age),sex,job)

12.4 格式化实现方法二:

  info = {"name":"jack","age":22,"sex":"man","job":"IT"}
  msg2 = '''
  -------------- info to %(name)s ----------------
  Name : %(name)s
  Age : %(age)d
  Sex : %(sex)s
  Job : %(job)s
  ----------------- end -------------------
  '''%(info)
  print(msg2)

注意:如果在输入中%号要按照实际输出, 可以加上% 来转义一下: %% 两个百分号就输出实际的%号了。

十三 初始编码

13.1 asiic码

  只有英文字母,数字,特殊符号。

  A  :00000001 8位 等于一个字节 8位是256个

13.2 unicode 万国码

  看到的内容最小组成元素是一个字符 unicode 是16位也就是2字节为一个字符

  16位就是 65535个

  A  :00000001 00000001

13.3 由于万国码也无法装下全世界的语言字符,所以就进行了升级,升级为32位 四个字节表示一个字符

  A  : 00000001 00000001 00000001 00000001   四个字节

  中文   :00000001 00000001 00000001 00000001   四个字节

  这个字符集太浪费空间了。于是吧 unicode 升级到 utf-8。

13.4 utf-8

  UTF-8可以动态调整编码大小。

  A            :  01000010 一字节

  欧洲文字:  00000001 00000001 两字节

  中文       :  00000001 00000001 00000001 三字节

13.5 GBK 国标 :

  只能翻译中文与英文。

  A   :  00000001 一个字节

  中文    : 00000001 00000001 两个字节

十四 基础数据类型简单介绍

  14.1 数组

    数组定义是使用 { } 来进行定义。数组中一个key也叫做键, 对应一个value叫做值,是成对出现的。

      dict = {"name":"jack","sex":"man"}  “name”就是key  "jack"就是value。

    键的类型只能是 int 、  bool 、  str、  tuple()。一般是使用字符串当键。

    数组取值: 使用数组的键来获取他的值。

      dict = {"name":"jack","sex":"man","job":"IT"}

      print(dict["name"] )    输出结果为"jack"

  14.2 列表

    列表定义是使用 [ ] 来进行定义:

      name = [ "jack","tom","bobo"]

    列表中的值是有索引的也叫下标,每个值对应一个下标。默认是从0开始

    比如:取出列表中的jack

      li = [1,2,3,4,5,"jack"]

      print(li[5])    输出结果为"jack"

练习题:

1、使用while循环输入 1 2 3 4 5 6 8 9 10

2、求1-100的所有数的和

3、输出 1-100 内的所有奇数

4、输出 1-100 内的所有偶数

5、求1-2+3-4+5 ... 99的所有数的和

6、用户登陆(三次机会重试)

  可以支持多用户登录

  li = [{'username':'alex','password':'SB'},

  {'username':'wusir','password':'sb'},

  {'username':'taibai','password':'男神'},

  ]

  客户输入了三次机会,都没成功,给它一个选择,让它在试试

  Y 再给他三次机会...不输入了,print('拜拜。。')

上一篇:Struts2学习笔记(七)——类型转换


下一篇:什么是CDN及CDN加速原理