CrazyWing: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)调用。模块可以包含直接运行的代码块、类定义、 函数定义或这几者的组合。
后面我们会有专门的模块讲解


本文转自 CrazyWing 51CTO博客,原文链接:http://blog.51cto.com/fklinux/2046637


相关文章
|
5天前
|
运维 应用服务中间件 持续交付
自动化运维的利器:Ansible实战应用
【9月更文挑战第33天】本文将带你深入理解Ansible,一个强大的自动化运维工具。我们将从基础概念开始,逐步探索其配置管理、任务调度等功能,并通过实际案例演示其在自动化部署和批量操作中的应用。文章旨在通过浅显易懂的语言和实例,为读者揭开Ansible的神秘面纱,展示其在简化运维工作中的强大能力。
102 64
|
3天前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
9天前
|
机器学习/深度学习 人工智能 运维
自动化运维的魔法:如何利用Python脚本提升工作效率
【9月更文挑战第29天】在数字时代的浪潮中,IT运维人员面临着前所未有的挑战和机遇。本文将通过深入浅出的方式,介绍自动化运维的基本概念、核心价值以及使用Python脚本实现自动化任务的方法。我们将从实际案例出发,探讨如何利用Python简化日常的系统管理任务,提高运维效率,并展望自动化运维的未来趋势。无论你是初学者还是有经验的运维专家,这篇文章都将为你开启一扇通往高效工作方式的大门。
14 2
|
11天前
|
数据安全/隐私保护 Python
Python办公自动化:给pdf加水印
Python办公自动化:给pdf加水印
11 0
|
11天前
|
Python
Python办公自动化:提取pdf文件中的图片
Python办公自动化:提取pdf文件中的图片
13 0
|
21天前
|
运维 监控 安全
构建高效运维体系:从监控到自动化的全方位实践
本文深入探讨了构建高效运维体系的关键要素,从监控、日志管理、自动化工具、容器化与微服务架构、持续集成与持续部署(CI/CD)、虚拟化与云计算以及安全与合规等方面进行了全面阐述。通过引入先进的技术和方法,结合实际案例和项目经验,为读者提供了一套完整的运维解决方案,旨在帮助企业提升运维效率,降低运营成本,确保业务稳定运行。
|
19天前
|
机器学习/深度学习 运维 Prometheus
构建高效运维体系:从自动化部署到智能监控的全方位实践
在当今数字化时代,企业对运维效率和稳定性的要求越来越高。本文将探讨如何构建一个高效的运维体系,从自动化部署、持续集成与持续交付(CI/CD)、智能监控、故障管理以及数据驱动决策等方面进行深入分析和实践指导。通过这些方法,企业可以实现更快速、更可靠的软件发布和问题解决,提升整体运营效率。
|
15天前
|
敏捷开发 运维 Prometheus
构建高效运维体系:从基础架构到自动化管理
本文探讨了如何通过优化基础架构、引入自动化工具和流程,以及加强团队协作,构建高效的运维体系。通过案例分析和实践建议,帮助运维人员实现系统的稳定性、可靠性和可维护性。
|
9天前
|
机器学习/深度学习 运维 Cloud Native
构建高效运维体系:从自动化到智能化的演进之路
在当今数字化时代,运维作为信息技术的重要支柱,其效率与创新能力直接关系到企业信息系统的稳定性和业务连续性。本文将探讨如何通过技术手段,实现运维从传统手工操作向自动化、智能化的转变,进而构建一个高效、可靠的运维体系。我们将从自动化工具的应用开始,逐步深入到智能运维的实践,最终展望云原生架构下的运维未来趋势。
|
11天前
|
运维 Ubuntu 应用服务中间件
自动化运维:使用Ansible进行配置管理和任务自动化
【9月更文挑战第27天】在现代IT基础设施中,自动化运维是提高效率、减少人为错误和确保系统一致性的关键。本文将介绍如何使用Ansible,一个流行的开源IT自动化工具,来简化日常的运维任务。我们将探索Ansible的核心概念,包括它的架构、如何安装和使用它,以及一些实际的使用案例。无论你是新手还是有经验的运维专家,这篇文章都会提供有价值的见解和技巧,以帮助你更好地利用Ansible实现自动化。