Python自动化运维开发实战 二、Python基本用法
导语:
Python编程博大精深,知识点众多,需要先整体上了解python的一些基本用法之后再去对每一个知识点细细研究,这样学习的速度会快很多。所以下面就先看一些python事先需要知道的基本知识。
交互模式编程:
所谓交互就是跟用户也就是我们使用python的人交互,你给出指令或代码,python解释器给出结果。
调用解释器不经过脚本文件作为参数,显示以下提示:
# python
Python 2.7.10 (default, Jul 14 2015, 19:46:27)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
键入下列文字在Python提示符,然后按Enter键:
>>> print "Hello, Python!" #python2.0
>>> print ("Hello, Python!") #python3.0
Hello, Python!
强烈推荐使用ipython,其安装方式见:http://blog.51cto.com/fklinux/2046741
脚本模式编程:
所谓脚本编程,即把python指令或代码写入文本文件当中,再给这些指令指定一个命令解释器,这个文件文件就是python脚本了。
比如:写入如下代码在一个test.py文件
print "Hello, Python!"
运行程序:
python test.py
Hello, Python!
另一种方式执行Python脚本,修改后的test.py文件:
#!/usr/bin/python
print "Hello, Python!"
运行程序:
chmod +x test.py
#./test.py
Hello, Python!
脚本模式编程中使用中文
python默认使用ascii码,不支持中文,使用中文需要声明支持中文的字符集,一般是utf8,方式如下:
#!/usr/bin/python
#coding=utf8
#encoding:utf-8
#_*_ coding:utf-8 _*_
print "你好中国!"
上面3种方式都可以
为什么有这么多写法?
python是按正则的方式检测你的字符集定义里面有没有他想要看到的东西,只要符合下面的正则即可:
coding[:=]\s*([-\w.]+)
[root@wing python]# cat a.py
#!/usr/bin/env python
#fdsf coding=utf8 fdaf 比如这里的fdsf fdaf是我随便乱写的 只要里面有coding utf8 等等就可以
print "中国你好"
注:python3中已经可以直接支持中文,不需要专门指定支持中文的字符集
Python标识符:
1. 用来标识一个变量,函数,类,模块或其他对象的名称。
2. 一个标识符开始以字母A到Z或a到z后跟零个或多个字母下划线(_)和数字(0〜9),Python标识符内不允许标点符号,如@、$、%等。
3. Python区分大小写。
标识符命名约定:
• 类名以大写字母以及所有其它标识符以小写字母。
• 开头单个前导下划线的标识符表示由该标识符约定的意思是私有的。
• 开头两个前导下划线的标识符表示一个强烈的私有的标识符。
• 如果标识符末尾还具有两个下划线结束时,该标识符是一个语言定义的特殊名称。
避免用下划线作为变量名的开始:
因为下划线对解释器有特殊意义,而且是内建标识符所使用的符号,建议程序员避免用下划线作为变量名的开始。
一般来讲,变量名'_xxx' 被看作是“私有的”,在模块或类外不可以使用。
当变量是私有的时候,用_xxx 来表示变量是很好的习惯。
因为变量名__xxx__对 Python 来说有特殊含义,对于普通的变量应当避免这种命名风格
保留字:
保留字不可以被用作常量或变量,或任何其它标识符。所有Python关键字只包含小写字母。
查询当前版本python中所有关键字:
>> import keyword #如果系统中没有这个模块,需要安装python-docs
>> keyword.kwlist
['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']
判断是否为关键字:
>> keyword.iskeyword ('False')
此时将返回True
行和缩进:
学习Python时,遇到的第一个需要注意的地方是,不使用括号来表示代码的类和函数定义块或流程控制。代码块是由行缩进,这是严格执行表示方式。
缩进位的数目是可变的,但是在块中的所有语句必须缩进相同的量。在这个例子中,两个功能块都很好使用:
if True:
print "True"
else:
print "False"
在本例中的第二块将产生一个错误:
if True:
print "Answer"
print "True"
else:
print "Answer"
print "False"
因此,在Python中所有的连续线缩进的空格数同样的会结成块。
多行语句:
Python语句通常用一个新行结束。 但是,Python允许使用续行字符()来表示,该行应该继续下去(跨行)。
例如:
total = (item_one +
item_two +
item_three)
包含在[],{}或()括号内的陈述并不需要使用续行符。
例如:
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']
可以使用三引号"""或'''来打印多行语句,写什么格式就打印什么格式。
比如:
print('''hello this
is
a
test 多行语句''')
打印结果如下:
hello this
is
a
test 多行语句
继续符( \ ):
Python 语句,一般使用换行分隔,也就是说一行一个语句。一行过长的语句可以使用反斜 杠( \ ) 分解成几行,比如:
if (weather_is_hot == 1) and \
(shark_warnings == 0):
send_goto_beach_mesg_to_pager()
引号:
Python可以使用单引号('),双引号(“)和三('''或”””)引号,以表示字符串常量,只要是同一类型的引号开始和结束的字符串。三重引号可以用于跨越多个行的字符串。
例如:
word = 'word'
sentence = "This is a sentence."
paragraph = """This is a paragraph. It is
made up of multiple lines and sentences."""
注释:
单行注释:
一个井号(#),“#”号之后字符到本行结束都是注释,Python解释器会忽略它们。比如:
#!/usr/bin/python
# First comment
print "Hello, Python!" # second comment
运行结果:
Hello, Python!
使用三引号完成多行注释:
'''
comment1
comment2
''''
等待用户:
方式1:raw_input()
程序的下面一行显示的提示,按回车键退出,等待用户按下回车键:
#!/usr/bin/python
raw_input("Press the enter key to exit.")
一旦用户按下键时,程序结束。这是一个很好的技巧,保持一个交互式对话,直到用户完成应用程序运行。
方式2:input()
上面两种等待用户输入的方式区别是:
raw_input不解释用户输入
input会解释用户的输入
在一行中多个语句:
分号( ; ) 允许在单行写入多条语句,不管语句是否启动一个新的代码块。下面是使用分号示例:
import sys; x = 'foo'; sys.stdout.write(x + '')
多个语句组作为套件:
一组单独的语句, 在Python单一的代码块被称为序列。复杂的语句,如if, while, def, and class,那些需要一个标题行和套件。
标题行开始与声明(关键字),并终止与冒号(:),接着是一个或多个线构成该套件。例如:
if expression :
suite
elif expression :
suite
else :
suite
命令行参数:
很多程序可以运行,它们提供有关如何运行的一些基本信息。 Python中可以使用 -h 做到这一
点:
$ python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d : debug output from parser (also PYTHONDEBUG=x)
-E : ignore environment variables (such as PYTHONPATH)
-h : print this help message and exit
[ etc. ]
你也可以设定你的脚本,它应该以这样的方式接受各种选项
如果想对python脚本传参数,需要模块:sys
参数个数:len(sys.argv)
脚本名: sys.argv[0]
参数1: sys.argv[1]
参数2: sys.argv[2]
#vim test.py
import sys
print “脚本名:”,sys.argv[0]
for i in range(1,len(sys.argv)):
print “参数”,i,sys.argv[i]
#python test.py hello world
脚本名:test.py
参数 1 hello
参数 2 world
模块
每一个 Python 脚本文件都可以被当成是一个模块。模块以磁盘文件的形式存在。
当一个模块变得过大,并且驱动了太多功能的话,就应该考虑拆一些代码出来另外建一个模块。
模块里的代码可以是一段直接执行的脚本,也可以是一堆类似库函数的代码,从而可以被别的模块导入(import)调用。模块可以包含直接运行的代码块、类定义、 函数定义或这几者的组合。
后面我们会有专门的模块讲解
Python自动化运维开发实战 二、Python基本用法的更多相关文章
- Python自动化运维开发实战 一、初识Python
导语 都忘记是什么时候知道python的了,我是搞linux运维的,早先只是知道搞运维必须会shell,要做一些运维自动化的工作,比如实现一些定时备份数据啊.批量执行某个操作啊.写写监控脚本什么的. ...
- Python自动化运维开发实战 三、python文件类型
导语: python常用的有3种文件类型 1. 源代码 py 2. 字节代码 pyc 3. 优化代码 pyo 源代码: python源代码的文件以”py"为扩展名,由python程序解释,不 ...
- Python自动化运维 - Django(二)Ajax基础 - 自定义分页
Ajax基础 AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下. 什么是Ajax AJAX = 异步 Java ...
- Python自动化运维之1、Python入门
Python简介 python是吉多·范罗苏姆发明的一种面向对象的脚本语言,可能有些人不知道面向对象和脚本具体是什么意思,但是对于一个初学者来说,现在并不需要明白.大家都知道,当下全栈工程师的概念很火 ...
- Python自动化运维之17、Python操作 Memcache、Redis、RabbitMQ
一.Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的 ...
- Python自动化运维之18、Python操作 MySQL、pymysql、SQLAchemy
一.MySQL 1.概述 什么是数据库 ? 答:数据的仓库,和Excel表中的行和列是差不多的,只是有各种约束和不同数据类型的表格 什么是 MySQL.Oracle.SQLite.Access.MS ...
- 【目录】Python自动化运维
目录:Python自动化运维笔记 Python自动化运维 - day2 - 数据类型 Python自动化运维 - day3 - 函数part1 Python自动化运维 - day4 - 函数Part2 ...
- python自动化运维篇
1-1 Python运维-课程简介及基础 1-2 Python运维-自动化运维脚本编写 2-1 Python自动化运维-Ansible教程-Ansible介绍 2-2 Python自动化运维-Ansi ...
- Python+Django+ansible playbook自动化运维项目实战☝☝☝
Python+Django+ansible playbook自动化运维项目实战☝☝☝ 一.入门引导 DevOPSDevOps(英文Development和Operations的组合)是一组过程.方法 ...
随机推荐
- AndroidStudio查看无用的资源文件;
1.打开需要查看的项目,选择AS上方标题栏的Analyze选项: 2.选择 Run Inspection by Name 3.在弹出框内输入 unused resources 4.筛选你需要查看的资源 ...
- JVM总结-java内存模型
我们先来看一个反常识的例子. int a=0, b=0; public void method1() { int r2 = a; b = 1; } public void method2() { in ...
- mac“打不开身份不明的开发者”
在mac安装软件发现这样的提示 解决方法: 打开系统偏好设置-->安全与隐私-->通用-->选择任何来源 不能选择的话点击按钮锁即可编辑 没有“任何来源”选项(比如我的mac) 打开 ...
- 网易云音乐mp3外链、真实地址下载方法
一个网易音乐外链地址长期有效,很简单的方法: 第一步打开网易云音乐,随便找到一首歌,播放,复制网址的ID, 例如:杨钰莹的心雨,网址是: http://music.163.com/#/song?id= ...
- 《C++数据结构-快速拾遗》 手写链表
注释:吕鑫老师C++对于找工作真的是很好的教程,基本什么方面都讲的很细致,但是对于大多数人只有快进快进再快进~~ 注释:基本链表信息自己百度,这里只是一个快速拾遗过程. 1.链表定义 typedef ...
- [Unity动画]06.子状态机
参考链接: https://www.jianshu.com/p/6b1db3d060ac?utm_campaign=maleskine&utm_content=note&utm_med ...
- 使用Fiddler获取手机app数据
参考资料:https://www.jianshu.com/p/9e05a2522758 Fiddler下载地址 https://www.telerik.com/download/fiddler
- oracle数据库tns配置方法详解
TNS简要介绍与应用 Oracle中TNS的完整定义:transparence Network Substrate透明网络底层,监听服务是它重要的一部分,不是全部,不要把TNS当作只是监听器. TNS ...
- 45.更新一下scrapy爬取工商信息爬虫代码
这里是完整的工商信息采集代码,不过此程序需要配合代理ip软件使用.问题:1.网站对ip之前没做限制,但是采集了一段时间就被检测到设置了反爬,每个ip只能访问十多次左右就被限制访问.2.网站对请求头的检 ...
- nginx 和 php超时设置
nginx.conf --- http节: keepalive_timeout 600; #客户端浏览器超时时间fastcgi_connect_timeout 600; #php-fpm连接超时时间 ...