DevOps系列文章 之 Python基础

Python语法结构

语句块缩进

1.python代码块通过缩进对齐表达代码逻辑而不是使用大括号

2.缩进表达一个语句属于哪个代码块
3.缩进风格 : 建议使用四个空格

如果是Linux系统的话,可以这样做,实现自动缩进 :

vim ~/.vimrc
set ai
set tabstop=4

注释 

1、和大部分脚本及Unix-shell语言一样,python也使用#符号标示注释
2、从#开始,直到一行结束的内容都是注释
3、良好的注释习惯可以做到:方便其他人了解程序功能 ;方便自己在日后读懂代码

文档字符串

1、可以当作一种特殊的注释
2、在模块、类或者函数的起始添加一个字符串,起到在线文档的功能
3、简单的说明可以使用单引号或双引号
4、较长的文字说明可以使用三引号

#!/usr/bin/env python
"""star module
just a sample module.
only include one function."""
def pstar():"do not accept args. Used to print 50 stars"print '*' * 50

导入模块后,就可以查看到在线文档:

[root@localhost bin]# python
>>> import star
>>> help(star)
NAME
star - star module
FILE
/root/bin/star.py
DESCRIPTION
just a sample module.
only include one function.
FUNCTIONS
pstar()
do not accept args. Used to print 50 stars

Python入门

第一句Python代码

1.在linux下创建一个文件叫hello.py,输入一下内容:

 print "hello,world"

然后执行命令:python hello.py ,输出

Hello World!

 python内部执行过程如下

1.指定解释器

上一步中执行 python hello.py 时,明确的指出 hello.py 脚本由 python 解释器来执行。

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

 #!/usr/bin/env pythonprint "hello,world"

如此一来,执行: ./hello.py 即可。

ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py

 字符编码

python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascii) ,ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。

1、关于中文

为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。

GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。

GB2312 支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。

从ASCII、GB2312、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。

有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定所有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:

报错:ascii码无法表示中文

 #!/usr/bin/env pythonprint "你好,世界"

改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:

1#!/usr/bin/env python# -*- coding: utf-8 -*-print "你好,世界"

2、补充知识:

 Python文件编码声明:

# -*- coding: utf-8 -*-是用来指定文件编码的
1、如果没有此文件编码类型声明,则Python默认以ASCII编码去处理
2、文件编码类型声明必须放在Python文件的第一行或第二行,即如果把文件编码类型声明放在其他行,则无法被识别
3、编码声明所支持的格式有3种:3.1 带等号的
#coding=<encoding name>
3.2 带冒号的
#!/usr/bin/env python 
#-*- coding:<encoding name> -*-3.3 vim的配置
#!/usr/bin/env python 
# vim : set fileencoding=<encoding name>4.声明的格式的语法只要是符合正则表达式就可以

 模块初识

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

  • Python内部提供的模块
  • 业内开源的模块
  • 程序员自己开发的模块

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

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3   
4 import sys
5   
6 print sys.argv 

Linux默认没有补全功能,要想实现此功能::

方法1:新建一个tab.py文件,输入以下内容:

#!/usr/bin/env pythonimport sys
import readline
import rlcompleter
import atexit
import osreadline.parse_and_bind('tab: complete')histfile = os.path.join(os.environ['HOME'], '.pythonhistory')try:readline.read_history_file(histfile)
except IOError:passatexit.register(readline.write_history_file,histfile)del os, histfile, readline, rlcompleter

保存完后,默认只能在当前目录下导入;要想实现在任何地方都可以导入,则要把该文件放到/usr/lib/python2.7/site-packages目录下。

这个目录在不同的OS里放的位置不一样,用 print(sys.path) 可以查看python环境变量列表

方法2:安装ipython

pyc 文件  

执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码

 变量              

1、变量定义的规则:

1.变量名只能是 字母、数字或下划线的任意组合

2、变量名的第一个字符不能是数字

3.大小写敏感

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']

5.关键字列表和iskeyword()函数都放入了keyword模块以便查阅

通过导入import keyword可以查看关键字:

 判断是否为关键字,是的话返回True,否则返回False

在Python中,从变量到对象的连接称作引用。也就是说,引用是一种关系,以内存中的指针的形式实现

一旦变量被使用(也就是说被引用),Python会自动跟随这个变量到对象的连接

1、变量是一个系统表的元素,拥有指向对象的连接的空间

2、对象是分配的一块内存,有足够的空间去表示它们所代表的值

3、引用是自动形成的从变量到对象的指针

2、声明变量

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3   
4 name = "hello"

上述代码声明了一个变量,变量名为: name,变量name的值为:"hello world"

变量的作用:其代指内存里某个地址中保存的内容

3、变量赋值

1.变量的类型和值在赋值那一刻被初始化

2. 变量赋值通过等号来执行
3 python也支持增量赋值

#!/usr/bin/env python# -*- coding: utf-8 -*-name1 = "hello"name2 = "world"

 4、赋值运算符

1.python语言中,等号=是主要的赋值运算符

2.赋值并不是直接将一个值赋给一个变量
3.在python中,对象是通过引用传递的。在赋值时,不管这个对象是新创建的,还是一个已经存在的,

都是将该对象的引用(并不是值)赋值给变量
4.python也支持链式多重赋值

下面是几种赋值方式的例子:

链式赋值

1

>>> x = y = 1

增量赋值

从python 2.0开始,等号可以和一个算术运算符组合在一起,
将计算结果重新赋值给左边的变量,这被称为增量赋值

>>> x += 1

多元赋值

1、另一种将多个变量同时赋值的方法称为多元赋值,采用这种方式赋值时,等号两边的对象都是元组

>>> x, y, z = 1, 2, 'a string'
>>> print 'x=%d, y=%d' % (x, y)
x=1, y=2
>>> x, y = y, x
>>> print 'x=%d, y=%d' % (x, y)
x=2, y=1

5、使用raw_input()函数读取用户输入数据

#!/usr/bin/env python
# -*- coding: utf-8 -*-# 将用户输入的内容赋值给 name 变量
name = raw_input("请输入用户名:")  # 打印输入的内容
print name

输出结果:

请输入用户名:bob
bob
 

注意:在2.7版本中,需要注意raw_input和input的区别
1.因为 raw_input()把任何输入的都转成字符串存储。
2.而 input()接受输入的是一个表达式,否则就报错

3.raw_input()的小括号中放入的是,提示信息,用来在获取数据之前给用户的一个简单提示

4.input()函数与raw_input()类似,但其接受的输入必须是表达式

5.input()接受表达式输入,并把表达式的结果赋值给等号左边的变量

python3版本中

没有raw_input()函数,只有input()

并且 python3中的input与python2中的raw_input()功能一样

>>> name = input("My name is : ")
My name is : xiaomingTraceback (most recent call last):File "<pyshell#0>", line 1, in <module>name = input("My name is : ")File "<string>", line 1, in <module>
NameError: name 'xiaoming' is not defined
>>> 
>>> name = input("My name is : ")
My name is : "xiaoming"
>>> print name
xiaoming
>>> 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/56118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FreeSWITCH 1.10.10 简单图形化界面3 - 阿里云NAT设置

FreeSWITCH 1.10.10 简单图形化界面3 - 阿里云NAT设置 0、 界面预览1、 查看IP地址2、 修改协议配置3、 开放阿里云安全组4、 设置ACL5、 设置协议中ACL&#xff0c;让PBX匹配内外网6、 重新加载SIP模块7、 查看状态8、 测试一下 0、 界面预览 http://myfs.f3322.net:8020/ 用…

LeetCode-56-合并区间

题目描述&#xff1a; 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 可以使用 LinkedList&#xff0c;…

一起学SF框架系列附-Springframework源码学习总结

学习过程 学习Springframework6.0.8&#xff0c;前后将近4个月终于结束了。学习主要内容如图&#xff08;红框&#xff09;&#xff1a; 本次学习主要针对核心模块&#xff1a;Beans、Context、Core、SpEL&#xff08;完全独立于框架的&#xff0c;没深入学习&#xff09;、…

MySQL 实战(一):实现“附近的人”功能

❤️ 个人主页&#xff1a;水滴技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; &#x1f338; 订阅专栏&#xff1a;MySQL 教程&#xff1a;从入门到精通 文章目录 ST_Distance_Sphere 函数示例一&#xff1a;计算北京站到北京西站的距…

【深度学习】实验03 特征处理

文章目录 特征处理标准化归一化正则化 特征处理 标准化 # 导入标准化库 from sklearn.preprocessing import StandardScalerfrom matplotlib import gridspec import numpy as np import matplotlib.pyplot as plt import warnings warnings.filterwarnings("ignore&quo…

aws PinPoint发附件demo

php 版aws PinPoint发附件demo Laravel8框架&#xff0c;安装了"aws/aws-sdk-php": "^3.257" 主要代码&#xff1a; public function sendRawMail(Request $request) {$file $request->file(attachment);/*echo count($file);dd($file);*/$filenam…

Mobx在非react组件中修改数据,在ts/js中修改数据实现响应式更新

我们都之前在封装mobx作为数据存储的时候&#xff0c;使用到了useContext作为包裹&#xff0c;将store变成了一个hooks使用&#xff0c;封装代码: import React from react import UserInfo from ./user import Setting from ./seting import NoteStore from ./noteclass Stor…

基于Jenkins构建生产CICD环境(第三篇)

目录 基于Jenkins自动打包并部署docker环境 1、安装docker-ce 2、阿里云镜像加速器 3、构建tomcat 基础镜像 4、构建一个Maven项目 基于Jenkins自动化部署PHP环境 基于rsync部署 基于Jenkins自动打包并部署docker环境 1、安装docker-ce 在192.168.2.123 机器上&#x…

Go 第三方库引起的线上问题、如何在线线上环境进行调试定位问题以及golang开发中各种问题精华整理总结

Go 第三方库引起的线上问题、如何在线线上环境进行调试定位问题以及golang开发中各种问题精华整理总结。 01 前言 在使用 Go 语言进行 Web 开发时&#xff0c;我们往往会选择一些优秀的库来简化 HTTP 请求的处理。其中&#xff0c;go-resty 是一个被广泛使用的 HTTP 客户端。…

如何有效进行RLHF的数据标注?

编者按&#xff1a;随着大语言模型在自然语言处理领域的广泛应用&#xff0c;如何从人类反馈进行强化学习&#xff08;RLHF&#xff09;已成为一个重要的技术挑战。并且RLHF需要大量高质量的人工数据标注&#xff0c;这是一个非常费力的过程。 本文作者在数据标注领域具有丰富经…

解决jupyter notebook可以使用pytorch而Pycharm不能使用pytorch的问题

之前我是用的这个目录下的Python 开始更新目录 1、 2、 3、

【javaweb】学习日记Day6 - Mysql 数据库 DDL DML

之前学习过的SQL语句笔记总结戳这里→【数据库原理与应用 - 第六章】T-SQL 在SQL Server的使用_Roye_ack的博客-CSDN博客 目录 一、概述 1、如何安装及配置路径Mysql&#xff1f; 2、SQL分类 二、DDL 数据定义 1、数据库操作 2、IDEA内置数据库使用 &#xff08;1&…

Python3 列表

Python3 列表 序列是 Python 中最基本的数据结构。 序列中的每个值都有对应的位置值&#xff0c;称之为索引&#xff0c;第一个索引是 0&#xff0c;第二个索引是 1&#xff0c;依此类推。 Python 有 6 个序列的内置类型&#xff0c;但最常见的是列表和元组。 列表都可以进…

飞腾uboot命令简单介绍

飞腾uboot和开源uboot并无大差异,故飞腾uboot固件命令可以直接从网上搜索开源uboot相关命令。 这里为了便于大家调试,将一些可能用到的命令说明一下。 在 Uboot 命令行下,输入 help 将打印所有的可用命令,复杂命令操作,通过命令 help 的方式获取具体说明。 1.help命令 …

时序预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机时间序列预测(多指标评价)

时序预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机时间序列预测(多指标评价) 目录 时序预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机时间序列预测(多指标评价)效果一览基本描述程序设计参考资料 效果一览 基本描述 MATLAB实现DBN-SVM深度置信网络结合支持向量机…

校招算法题实在不会做,有没有关系?

文章目录 前言一、校招二、时间复杂度1、单层循环2、双层循环 三、空间复杂度四、数据结构五、校招算法题实在不会做&#xff0c;有没有关系&#xff1f;六、英雄算法集训 前言 英雄算法联盟八月集训 已经接近尾声&#xff0c;九月算法集训将于 09月01日 正式开始&#xff0c;目…

.NET 8 Preview 7 中的 ASP.NET Core 更新

作者&#xff1a;Daniel Roth 排版&#xff1a;Alan Wang .NET 8 Preview 7 现在已经发布&#xff0c;其中包括了对 ASP.NET Core 的许多重要更新。 以下是预览版本中新增功能的摘要&#xff1a; 服务器和中间件 防伪中间件 API 编写 最小 API 的防伪集成 Native AOT 请求委托…

市值暴跌后,每日优鲜能否靠2亿融资“续命”?

濒临破产退市的每日优鲜&#xff0c;靠转型实现“自救”&#xff1f; 作为“生鲜电商第一股”&#xff0c;每日优鲜在上市1年后爆发生存危机。 8月4日&#xff0c;每日优鲜(NDAQ:MF)公布了2022年报&#xff0c;尽管去年7月其宣布关闭营收占比约90%的DWM业务&#xff0c;全面终…

【80天学习完《深入理解计算机系统》】第十一天 3.5 过程(函数调用)

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

RK3568 安卓源码编译

一.repo安卓编译工具 项目模块化/组件化之后各模块也作为独立的 Git 仓库从主项目里剥离了出去&#xff0c;各模块各自管理自己的版本。Android源码引用了很多开源项目&#xff0c;每一个子项目都是一个Git仓库&#xff0c;每个Git仓库都有很多分支版本&#xff0c;为了方便统…