Python第一天

 

一.为什么学Python

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

二.Python介绍

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

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

由上图可见,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的对应关系和执行流程如下:

 

PyPy,在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版本:

  

  3.0版本:

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

python内部执行过程如下:

人生中的第一个python程序。

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

五-1语句和语法:

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

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

六. 字符编码与变量

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

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

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. 三级菜单(地理位置,省市县)

Python初识的更多相关文章

  1. python初识(二)

    目录: 进制 基本数据类型 整形 布尔值 字符串 列表 元祖 字典 集合 range & enumerate 一.进制 二进制转换十进制计算: 十进制:==47 一个字节公式:==128 64 ...

  2. 小学生绞尽脑汁也学不会的python(初识面对对象)

    小学生绞尽脑汁也学不会的python(初识面对对象) 一. 面向对象思想 1. 面向过程. 重点在"过程". 按照实物的发展流程. 先干嘛,后干嘛, 最后干嘛.... 优点: 简单 ...

  3. Python 入门【一】Python 初识及学习资料

    Python 初识及学习路线: CodeCademy Python 在线教学: 廖雪峰 Python 2.7 教程: 廖雪峰 Python 3.0 教程: Python 官方文档(2.7~3.7:英文 ...

  4. Python初识类与对象

    Python初识类与对象 类与对象 世界观角度分析类与对象 类是一个抽象的概念,而对象是一个实体的存在,对象由类创造而出,每个对象之间互相独立互不影响,一个对象可以同时拥有多个类的方法,实例化就是通过 ...

  5. Python初识函数

    Python初识函数 函数理论篇 什么是函数 在编程语言中的函数不同于数学中的函数.不管是数学上的函数还是编程语言中的函数都是为了完成特定的某一功能而诞生的,他们的区别在于: 1.数学中的函数当输入的 ...

  6. Python初识与简介【开篇】

    目录 1.扯淡 2.Python历史 3.Python简介 4.Python应用 5.为什么是python而不是其他语言? 6.Python的种类 7.Python的特点 8.Python设计哲学 9 ...

  7. Python初识文本基本操作

    初识文本的基本操作 怎么在文件里面写内容和都内容 文件操作过程 1,找到文件 文件路径 2,打开文件 file_obj=file(文件路径,模式) 3,文件操作,读写文件 file_obj.read( ...

  8. python初识-day2

    1.模块初识 python中的库包括标准库和第三方库,需要使用时可直接导入,导入格式为"import  库模块",例如: import sys #sys为python的标准库 pr ...

  9. python - 初识面向对象

    1.初识面向对象       面向过程:一切以事务的发展流程为中心           优点:负责的问题流程化,编写相对简单         缺点:可扩展性差,只能解决一个问题,改造也会很困难,牵一发 ...

  10. 第一篇、Python初识

    1.Python文件后缀是否可以任意? 单独执行的时候没关系,但当文件需要导入(即导入模块)的时候,如果不是py后缀的,会出错. 2.执行方法 1) python +文件路径 python + fil ...

随机推荐

  1. 存储过程获取最后插入到数据表里面的ID

    存储过程获取最后插入到数据表里面的ID SET NOCOUNT on;---不返回影响行数提高性能GOcreate proc [sp_bbs_thread_Insert] @id int output ...

  2. C#2.0 特性

    泛型 迭代器 分布类 可空类型 匿名方法 命名空间别名限定符 静态类 外部程序程序集别名 属性访问器可访问性 委托中的协变和逆变 如何声明.实例化.使用委托 固定大小的缓冲区 友元程序集 内联警告控制 ...

  3. R笔记 map_leaflet googlevis

    packages : map leaflet library(leaflet) library(maps) mapStates = map("state", fill = TRUE ...

  4. POJ 1845 Sumdiv

    快速幂+等比数列求和.... Sumdiv Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12599 Accepted: 305 ...

  5. UI第三节—— UITextField详解

    戏言:UITextField对于需要登陆注册的界面的作用还是相当明显,但是对于键盘过的遮挡问题,可是重点哦!这里就涉及到通知(NSNotificationCenter)的内容. //注册事件 [[NS ...

  6. linux 之常见的好用命令

    参考网址:软件匠艺小组之第八期把命令行玩飞起来 1.如果想要将文件重定向到文件里,而又想看重定向的内容, tee命令 例如:ls | tee foot.txt 2.如果想要字母显示为大写独特的,命令: ...

  7. ZOJ 3811 Untrusted Patrol

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3811 解题报告:一个无向图上有n个点和m条边,其中有k个点上安装 ...

  8. C++ 模板函数与模板类

    一.模板函数 函数模板提供了一类函数的抽象,即代表了一类函数.当函数模板被实例化后,它会生成具体的模板函数.例如下面便是一个函数模板:

  9. Android中的四种动画(一)

    TweenAnimation 变换动画(也叫作"补间动画"),有四种(alpha scale translate rote). FrameAnimation(也叫DrawableA ...

  10. HDU 1503 带回朔路径的最长公共子串

    http://acm.hdu.edu.cn/showproblem.php?pid=1503 这道题又WA了好几次 在裸最长公共子串基础上加了回溯功能,就是给三种状态各做一个 不同的标记.dp[n][ ...