Python初识

时间:2023-03-08 23:12:54
Python初识

Python第一天

 

一.为什么学Python

       作为一名linux运维工程师现在越来越感觉不好干了。没有地位,还待背黑锅,并且运维自动化发展的这么快,普通运维岗位的路也越来越窄(因为我很菜),和几个同事商量学习python,当然自己也很感兴趣。不废话了,估计你也和我差不多的想法。

二.Python介绍

据说Python的诞生是由一个荷兰人在圣诞节(1989年)期间,为了打发时间,开发了一个新的脚本解释程序,即Python。(创始人都是这么牛逼吗?打发时间都能搞一个语言出来,膜拜),最近几年python发展的太快了,在TIOBE排行榜超越了PHP占据第五,他的代码清晰,简洁,应用于各个领域。各大型互联网企业都在使用,如:GooGle,Yahoo,Youtube,知乎,豆瓣等等。

  最新的TIOBE排行榜,Python赶超PHP占据第五!!!

Python初识Python初识

由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!!

Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。互联网公司广泛使用Python来做的事一般有:自动化运维自动化测试大数据分析、爬虫、Web 等。

注视:上述重点字体表示该公司主要使用Python语言开发

Python种类:

  1. Cpython

    a)  使用C语言实现,使用较广泛,官方采用。

    b) 原理:cpython将源文件(.py文件)转换成字节码文件(pcy文件),然后运行于Python虚拟机上。

  2. Jpython

    a)  使用java实现。

    b) 原理:Jpython将Python代码动态编译成Java代码,然后由JVM运行

  3. IronPython

    a) 使用C#实现。

    b) ronPython将代码编译成C#字节码,然后由CLR运行

  4. PyPy

    a)  由Python实现Python

    b)  将Python字节码再次编译成机器码。

以上除PyPy之外,其他的Python的对应关系和执行流程如下:

Python初识 Python初识

PyPy,在Python的基础上对Python的字节码进一步处理,从而提升执行速度!

Python初识

。。。。。。。。。。。。。。等等。。。。。。。。。。。。。。。。。

下图为Python具体实现的过程:

Python初识

四. 使用2.0还是3.0?

对于这个问题网上讨论的很是热烈啊,用2.0的鄙视3.0的。用3.0的鄙视2.0 的,你属于哪一个?(我看着2.0的书,用着3.0敲代码,呵呵,只是菜鸟起步,不要想太多)。

四(补充)  Python的安装?

  1. windows安装:

 1、下载安装包
https://www.python.org/downloads/
2、安装
默认安装路径:C:\python35
3、配置环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
如:原来的值;C:\python35,切记前面有分号

  2. linux安装:

    centos6.6默认已经安装Python2.7版本,直接可以使用。

    centos6.6在Python2.7版本的基础上编译安装Python3.5版本:

 安装编译环境:
#yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make 下载python3.5安装包:
#wget --no-check-certificate https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz 解压到当前目录:
#tar -zxvf Python-3.5..tgz
#cd Python-3.5.
编译并指定安装目录:
#./configure --prefix=/usr/local/python3. --enable-shared
#make & make install
为了区别2.X和3.X启动程序指定软连接
#ln -s /usr/local/python3./bin/python3 /usr/bin/python3 此时运行python3命令的话会报错,缺少.so文件,我们需要进行如下操作: #cp -R /usr/local/python3./lib/* /usr/lib64/ ok!此时python3的基础环境已经安装完成! 启动python3,输入时如果上下左右,退格键都出现乱码时: 说明readline-devel 没有安装,默认只有readline: 查看:
#rpm -qa | grep readline* 安装:
#yum -y install readline-devel 重新编译安装即可
#./confgure ......
#make && make install 至此centos3.5编译安装结束。

五. 程序员的第一个程序:Hello,World

  a) 使用交互式解释器直接启动python,显示程序版本及操作系统等。

  2.0版本:

  Python初识

  3.0版本:

Python初识

  b) Linux系统自带python,创建文件:

Python初识

Python初识

Python初识

python内部执行过程如下:

Python初识

人生中的第一个python程序。

注: windows下可以使用PyCharm软件编写程序

五-1语句和语法:

    Python语句中的一些基本规则和特殊字符。

    • 井号(#):Python注释
    • 三引号('''): Python多行注释
    • 换行(\n): 标准行分隔符
    • 反斜线(\): 连接上一行
    • 分号(;): 将两个语句连接在一行中
    • 冒号(:): 将代码块的头和体分开
    • 不能的缩进分隔不同的代码块(四个空格宽度)
    • Python文件通过模块的形式组织 ,可以通过import导入使用。

六. 字符编码与变量

Python解释器在加载.py文件中的代码时,会对内容进行编码,默认为ASCII

2.0版本需要在脚本中制定编码,如下:

Python初识

3.0版本可以忽略这个问题,解析器自动会进行编码

a) 变量命名规则:

1. 只能包含字母,数字和下划线。

2. 区分字母大小写

3. 禁止使用保留字

注意: Python2与Python3的保留字有所不同

b) 命令惯例:

  1. 以单一下划线开头变量名(_X)不会被form module import *语句导入
  2. 前后有下划线的变量名(_X_)为系统定义的变量名,对python解释器有特殊意义
  3. 以两个下划线开头,但结尾没有下划线的变量名(__X)是类的本地变量
  4. 交互模式下,变量名“_”用于保存最后表达式的结果

注意:变量名没有类型,对象才有

  • 以下关键字不能声明为变量名
    ['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']

c) 变量赋值:

  1. 赋值操作符(=):

>>> a = 1

>>> b = 2

>>> a

1

>>> b

2

>>> c = "this is a string"

>>> c

'this is a string'
name = "zhao"
name2 = name
print(name,name2) name = "hong" print(name,name2) zhao zhao
hong zhao

  2. 增量赋值:

 x = x + 1
可以写为:
x += 1 #操作符:
+= -= *= /= %= **= <<= >>= &= ^= \=

  3. 多重赋值:

>>> x = y = z = 1
>>> x
1
>>> y
1
>>> z
1

  4. 多元赋值:

>>> x, y, z = 1, 2, 'astring'
>>> x
1
>>> y
2
>>> z
'astring' #等号两边都为元组() ,如下
>>> (x, y, z) = (1, 2, 'astring') 

七. 用户输入:

user = input("请输入你的用户名:")

print("你的用户名为:" , user)

passwd =input("请输入你的密码")

print("你的密码为:",passwd)    #显示输入的密码,如果想隐藏密码如下:

import getpass

password = getpass.getpass("请输入密码")

print(password)

案例:

   用户输入一个符号,并用所给的符号输出如下图形:

 ****
*
****
* *
****
 最娄代码:

 s = input("请输入一个符号:")
print( '',s+s+s+s,'\n',s,'\n',s+s+s+s,'\n',s+' '+' '+s,'\n',s+s+s+s,'\n')

八. 模块

python是由一系列的模块组成的,每个模块就是一个py为后缀的文件,同时模块也是一个命名空间,从而避免了变量名称冲突的问题。模块我们就可以理解为lib库,如果需要使用某个模块中的函数或对象,则要导入这个模块才可以使用,除了系统默认的模块不需要导入外。导入直接使用如下语法:

import 模块名称(不需要加.py后缀)

》》》基本的模块结构布局:

  1. 起始行(Unix)  2. 编码  3. 模块文档  4. 导入模块  5. 变量定义  6. 类定义  7. 函数定义  8.主程序

 #!/usr/bin/env python           #1.起始行,必须定义
# -*- coding: utf-8 -*- #2.编码,3.X版本可以省略
# __Author__: Zhaohongfei #自定义,可有可无 "This is a test module" #3.模块文档 import sys,os #4.导入模块,多个模块可用逗号分隔 debug = True #5.变量定义(全局) class Fooclass(object): #6.类定义(若有)
"Foo class"
pass def test(): #7.函数定义
"test function"
foo = Fooclass() if debug:
print(test()) if __name__ == '__main__': #8.主程序
test()

获取参数:

import sys

       print(sys.argv)        #输出

       # python module.py hello world

       [“module.py”, “hello”, “world”]    #获取执行脚本获取的参数

         Import os

         os.system(“df -h”)  #调用系统的命令

九.  执行脚本传入参数

  Python有大量的模块,从而使得开发python程序非常简洁。类库有包括三种:

    1. Python内部提供模块

    2. 业内开源模块

    3. 程序员自己开发的模块

  Python内部提供一个sys模块,其中的sys.argv用来捕获执行Python脚本时传入的参数

#!/usr/bin/env python
# -*- coding: utf-8 -*- import sys print sys.argv

十. 流程控制

  需求一. 用户登录验证

 # !/usr/bin/env python
# -*- coding: encoding -*- # 提示输入用户名和密码 # 验证用户名和密码
# 如果错误,则输出用户名或密码错误
# 如果成功,则输出 欢迎,XXX! import getpass name = input('请输入用户名:')
pwd = getpass.getpass('请输入密码:') if name == "hong" and pwd == "abc":
print("欢迎登陆!")
else:
print("用户名和密码错误")

需求二. 根据用户输入内容输出其权限

 # 根据用户输入内容打印其权限

 # wpq --> 超级管理员
# hong --> 普通管理员
# zs,ls --> 业务主管
# 其他 --> 普通用户 name = input('请输入用户名:') if name == "wpq":
print("超级管理员")
elif name == "hong":
print("普通管理员")
elif name == "zs" or name == "ls":
print("业务主管")
else:
print("普通用户")

练习:

写一个能用tab自动补全的模块:

Linux上tab 补齐代码:

#!/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.7/site-packages

以上即为Python第一天所学的东西,看似简单实则还需要多练。

课后习题:

1 编写一个用户登录接口,用户密码错误输入三次后锁定账户

2. 三级菜单(地理位置,省市县)