开篇导语

  • 整个Python运维开发教学采用的是最新的3.5.2版,当遇到2.x和3.x版本的不同点时,会采取演示的方式,让同学们了解。
  • 教学预计分为四大部分,Python开发基础,Python开发进阶,Python网页编程,Python项目实战
  • Python开发基础分为语法基础篇,文件基础篇,函数基础篇,模块基础篇
  • 语法基础篇中,我着重希望训练同学的是作为开发应该具备的一种逻辑思路。
  • 文件基础篇中,我们需要练习的是如何将数据永久性的存储在硬盘上,提供读,写。
  • 函数基础篇中,我重点是要引导同学们构建出整个代码架构的编写设计模式。只有逻辑和架构完全成型同学们才算是从思想上真正进入开发领域的大门。
  • 模块基础篇中,我们接触很多常用的模块,比如装饰器和生成器等。并通过这些模块来继续完善优化我们对整个代码架构的设计能力。
  • 至此,我们Python开发基础部分就结束了,大概60课时,15小节。

一,Python发展介绍

  1. 打开网页直接念百度百科
  2. 介绍下Python3.X优于Python2.7X的地方
  3. 企业Centos7.0将和Python3.0同步升级

二,Python的基础环境构建

在编译之前,我们先yum安装一些支持程序

yum -y install gcc gcc-c++ make autoconf readline readline-devel

2.1 Centos6.5升级Python2.7和Python3.5程序

升级Python2.7.13

[root@localhost ~]# tar xf Python-2.7..tgz -C /usr/src/
[root@localhost ~]# tar xf Python-2.7..tgz -C /usr/src/
[root@localhost Python-2.7.]# ./configure --prefix=/usr/local/python27
[root@localhost Python-2.7.]# make && make install
[root@localhost python27]# cd /usr/local/python27/
[root@localhost python27]# python -V
Python 2.6.
[root@localhost python27]# which python
/usr/bin/python
[root@localhost python27]# mv /usr/bin/python /usr/bin/python26
[root@localhost bin]# ln -s /usr/local/python27/bin/python /usr/bin/python
[root@localhost bin]# python -V
Python 2.7.
 

升级Python3.5.2

[root@localhost ~]# tar xf Python-3.5..tgz -C /usr/src/
[root@localhost ~]# cd /usr/src/Python-3.5./
[root@localhost Python-3.5.]# ./configure --prefix=/usr/local/python35
[root@localhost Python-3.5.]# make && make install
[root@localhost python35]# cd /usr/local/python35/bin/
[root@localhost bin]# ln -s /usr/local/python35/bin/python3 /usr/bin/python3
[root@localhost bin]# python3 -V
Python 3.5.

修复yum仓库的编译错误

[root@localhost bin]# vim `which yum`
[root@localhost bin]# head - `which yum`
#!/usr/bin/python26 #修改这里

2.2 创建Python的vim初始练习环境

在家目录创建如下文件和内容

[root@localhost ~]# cat ~/.vimrc
set cursorline set tabstop= set shiftwidth= set expandtab function PythonHeader()
call setline(,"#!/usr/bin/env python3")
call setline(,"# -*- coding:utf-8 -*-")
call setline(,"# author:你的名字")
normal G
normal o
normal o
endfunc autocmd BufNewfile *.py call PythonHeader() map <F5> :!clear ;python3 % <CR> #用Python3 执行当前shell

三,初识Python

3.1 解析器的写法

他们的区别?

#!/usr/bin/env python
#!/usr/bin/python
 

env是一个查找器,它会自动帮我们去找python这个可执行文件位置

3.2 第一个Python程序

在Linux下创建一个文件叫做hello.py

print("hello world!")

然后执行命令:python hello.py

[root@localhost ~]# python3 hello.py
hello world!

指定解释器:

如果想用类似于shell脚本一样的方式执行python脚本,例如:./hello.py,那么就需要在hello.py文件的头部指定解释器,如下:

#代码演示:

#!/usr/bin/env python3

print ("hello world!")

#输出结果

[root@localhost ~]# ./hello.py
hello world!

在交互器中执行代码

除了把程序写在文件中,还可以直接调用python自带的交互器运行代码。

[root@localhost ~]# python3
Python 3.5.2 (default, Dec 20 2017, 01:15:07)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello world!")
Hello world!

3.3 Python的变量

Python是一种强制编译型语言,它不需要像类似C语言一样提前声明变量的类型,而是根据赋值的内容是什么自动确定变量的类型

>>> name = 123  #直接赋值数字
>>> type(name)
<class 'int'> #name为整型
>>> name = "hello world" #赋值字符串
>>> type(name)
<class 'str'> #name为字符串类型
>>> name = "123" #给数字加双引号
>>> type (name)
<class 'str'> #也会被Python认为是字符串
>>> name = hello world #如果字母不加双引号,Python会认为是数字,因此报错
File "<stdin>", line 1
name = hello world
^
SyntaxError: invalid syntax

变量定义规则:

  • 变量名只能是字母,数字或下划线的任意组合
  • 变量名的第一个字符不能是数字
  • 以下关键字不能声明为变量名
['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']

关键字是什么?
类似Python程序默认的类型int,str还有系统环境变量等都是关键字

四,思考题与作业:利用Shell实现"模拟用户登录程序"

4.1 shell知识补充

(1)break,continue,return,exit循环控制语句作用演示
(2)脚本库函数functions引用

[root@localhost yunjisuan]# cat test.sh
#!/bin/bash . /etc/rc.d/init.d/functions action "服务运行成功!" /bin/true
action "服务运行失败!" /bin/false
[root@localhost yunjisuan]# sh test.sh
服务运行成功! [确定]
服务运行失败! [失败]

4.2 shell实现用户登录验证程序

[root@localhost yunjisuan]# cat login.sh
#!/bin/bash
#user login User="yunjisuan"
Passwd=""
User2="yunjisuan2"
Passwd2=""
Lock="" function Title(){
cat<<KOF
*************************
* ,登录用户 *
* ,退出 *
*************************
KOF
} function Login(){
#用户登录功能模块具体要求:
#,先判断用户名是否被锁定,如果被锁定,禁止登陆。
#,判断用户名是否正确,不正确重新输入
#,已知用户名判断密码是否正确,如果不正确重新输入密码。
#,密码输入3次如果全都错误,账户锁定(将用户名,放进变量Lock里)
#,如何放进变量里:Lock="$Lock $user",通过grep -w精确匹配过滤.
#,脚本一直不退出。除非,用户主动退出或者登陆成功! } while :
do
clear
Title
read -p "请输入你的选择:" Num
case $Num in
)
Login
;;
)
exit
;;
*)
echo "您的输入有误,请重新输入!"
sleep
;;
esac
done

转自
Python运维开发基础01-语法基础 - 陈思齐 - 博客园 https://www.cnblogs.com/chensiqiqi/p/9163023.html

Python运维开发基础01-语法基础【转】的更多相关文章

  1. Python运维开发基础04-语法基础【转】

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现“简单的购物车程 ...

  2. Python运维开发基础01-语法基础

    标签(空格分隔): Mr.chen之Python3.0执教笔记(QQ:215379068) --仅供北大青鸟内部学习交流使用 开发不是看出来的,开发一定是练出来的: 想学好开发,没有捷径可走,只有不断 ...

  3. Python运维开发基础06-语法基础【转】

    上节作业回顾 (讲解+温习120分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 添加商家入口和用户入口并实现物 ...

  4. Python运维开发基础03-语法基础 【转】

    上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现“用户登陆 ...

  5. Python运维开发基础10-函数基础【转】

    一,函数的非固定参数 1.1 默认参数 在定义形参的时候,提前给形参赋一个固定的值. #代码演示: def test(x,y=2): #形参里有一个默认参数 print (x) print (y) t ...

  6. Python运维开发基础09-函数基础【转】

    上节作业回顾 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 实现简单的shell命令sed的替换功能 import ...

  7. Python运维开发基础08-文件基础【转】

    一,文件的其他打开模式 "+"表示可以同时读写某个文件: r+,可读写文件(可读:可写:可追加) w+,写读(不常用) a+,同a(不常用 "U"表示在读取时, ...

  8. Python运维开发基础07-文件基础【转】

    一,文件的基础操作 对文件操作的流程 [x] :打开文件,得到文件句柄并赋值给一个变量 [x] :通过句柄对文件进行操作 [x] :关闭文件 创建初始操作模板文件 [root@localhost sc ...

  9. Python运维开发基础05-语法基础【转】

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python # -*- coding:utf-8 -*- # author:Mr.chen import os,time Tag = ...

随机推荐

  1. 浅析基于ARM的Linux下的系统调用的实现

    在Linux下系统调用是用软中断实现的,下面以一个简单的open例子简要分析一下应用层的open是如何调用到内核中的sys_open的. t8.c 1: #include <stdio.h> ...

  2. jQuery使用(六):DOM操作之元素包裹、克隆DOM与data的综合应用

    包裹 wrap() wrapInner() wrapAll() unwrap() clone() 数据缓存机制 data 文档处理(包裹) 1.1.wrap()--将所匹配的元素用其他元素结构化标签包 ...

  3. c# 三种传参方式 in,out,ref

    in:默认方式,传值不返回 out:不传值 但是会返回新值给予传参对象 ref:传存储地址,所以传参前必须赋值初始化,传值后的运算结果直接作用在传参上 Out和ref的效果差不多

  4. AJAX工作原理与缺点

    1.概念:什么是AJAXAJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.2.为什么要使用他 ...

  5. python之所以强大很大一部分原因在于他众多的取之不尽的库

    GUI 的 自动任务用这个pyautogui库,web 页面的用 selenium + webdriver 同类型的还有 sikuli ,低配版 按键精灵 本教程译自大神Al Sweigart的PyA ...

  6. iOS下如何阻止橡皮筋效果

    $(document).ready(function(){ var stopScrolling = function(event) { event.preventDefault(); } docume ...

  7. window.open post

    前端代码 expExcel(){ window.open(PreURL+'company_list_exp?keyword='+this.keyword+'&area_code='+this. ...

  8. 贝叶斯推断之最大后验概率(MAP)

    贝叶斯推断之最大后验概率(MAP) 本文详细记录贝叶斯后验概率分布的数学原理,基于贝叶斯后验概率实现一个二分类问题,谈谈我对贝叶斯推断的理解. 1. 二分类问题 给定N个样本的数据集,用\(X\)来表 ...

  9. 子线程导致 Windows 服务停止的情况(Topshelf 结合 Quartz.NET)

    Ø  前言 本文主要记录子线程导致 Topshelf 和 Quartz.NET 的 Windows 服务停止的现象,以及使用几种常用子线程的注意事项.因为我们有时可能需要开启多个线程执行复杂的逻辑,如 ...

  10. redis的常用命令及实例讲解

    使用命令行操作redis 数据类型 字符串String 列表list 使用双向循序链表实现(LinkedList) 散列 Hash 一般应用于将redis作为分布式缓存,存储数据库中的数据对象 集合s ...