一个脚本讲述python语言的基础规范,适合初学者

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介:

  最近学python的人比较多,今天讲一下python的基础:python脚本的规范、缩进、编写功能函数时注意事项等,这些都是自己编程过程中的心得体会。

一、python脚本的规范:

   每个脚本都有自己的规范,以下的规范不是强制的,但是规范一下,可以使你的脚本规范、易懂、方便使用。


#!/usr/bin/env python

# -*- coding: utf-8 -*-

这个写在开头,定义脚本编码。现在多数都是UTF8格式,所以写脚本尽量用这个编码,遇到中文可以做编码处理,字符串编码处理主要就是encode和decode


import os,urllib,MySQLdb,time,platform

导入需要的模块。


main():

   pass

定义函数


if __name__ == "__main__":

   main()

这个就是说脚本从这里往下执行,如果是其他的脚本调用这个脚本,这个脚本不至于执行其他的部分

提示:以上是整个脚本中的规范,大家在写脚本的时候尽量这么做。


二、python的缩进

   python的对缩进要求很严格,缩进不对,就会报语法错误;python中缩进就是一个tab键或是4个空格,4个空格比较麻烦,直接一个tab键简单,所以没有特别的需求,缩进一般用tab键。缩进类似于分层,同一缩进就是相同的层次。见如下实例:

if a==0:

   print a

else:

   print b


三、每一个功能对应一个函数

   这一点我认为最重要,每一个功能就写一个函数,这样你的脚本清晰易懂,脚本其他复用这个功能也方便,脚本也不冗余。不建议不要一个函数里面有好多功能,使函数模块化。

四、系统命令的引用

   引用系统命令的时候,特别是linux命令,一定要写命令的全路径,比如:

os.popen("/sbin/ifconfig eth0").read()

   这个你直接

os.popen("ifconfig eth0").read()

   这样也是没有问题的,起码是你手动执行脚本时,这个是会执行的,但是脚本做cron的时候,就不会执行了。所以这个要特别注意。


五、异常处理

try:

   pass

except Exception,e:

  print e

   其中e就是错误错误信息。try的异常处理这么写就足够用了,还有其他的方法,不常用。


   以下是一个获取本地ip地址,从数据库查询ip的用途,去连接一个URL,判断这个URL是否可以用,并写日志。主要讲了讲python操作数据库的常用用法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import  os,urllib,MySQLdb,time,platform
def  log_w(text):
     logfile  =  "/tmp/websocket.log"
     if  os.path.isfile(logfile):
         if  (os.path.getsize(logfile) / 1024 / 1024 ) >  100 :
             os.remove(logfile)
     now  =  time.strftime( "%Y-%m-%d %H:%M:%S" )
     tt  =  str (now)  +  "\t"  +  str (text)  +  "\n"
     =  open (logfile, 'a+' )
     f.write(tt)
     f.close()
def  get_idcname(ip):
     try :
         conn  =  MySQLdb.connect(host  =  '192.168.8.43' ,port = 3306 ,user  =  'read_app' ,passwd  =  '123456' ,charset = 'utf8' ,connect_timeout = 20 )
         cursor  =  conn.cursor() #查询出的结果是元组形式,元组和列表基本一样
         #cursor = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)#查询结果是字典形式
         sql  =  "select host,user from mysql.user where host='%s'"  %  ip #python中执行sql语句一次只能是一个sql语句,一次只执行一条,如果用分号分开写多条的话是会报错的,如果是多条sql语句可以多写几个sql和cursor.execute()来分开执行
         cursor.execute(sql) #执行sql语句
         #cursor.executemany("""insert into dist_sniffer.sniffer_order_day values(%s,%s,%s,%s,%s,%s,%s,%s,%s) """,values)#执行组合插入数据库的时候可以用这个,每个%s代表一个数据库字段,values是一个元组或是一个列表
         alldata  =  cursor.fetchall() #接收sql执行结果,如果是写操作的,这个就不用了
         #conn.commit()如果是写操作,需要这个去提交
         cursor.close()
         conn.close() #关闭数据库回话
         return  alldata[ 0 ][ 0 ].encode( 'UTF8' ) #如果是写操作的话就没有返回值了。
     except  Exception,e:
         return  0
def  get_ip():
     os  =  platform.system()
     if  os  = =  "Linux" :
         ip  =  os.popen( "/sbin/ifconfig eth0|grep 'inet addr'" ).read().strip().split( ":" )[ 1 ].split()[ 0 ]
     elif  os  = =  "Windows" :
         import  wmi
         c = wmi.WMI()
         network  =  c.Win32_NetworkAdapterConfiguration (IPEnabled = 1 )
         for  interface  in  network:
             if  interface.DefaultIPGateway:
                 ip  =  interface.IPAddress[ 0 ]
                 return  ip
                 #print interface.IPAddress[0],interface.MACAddress,interface.IPSubnet[0],interface.DefaultIPGateway[0],interface.DNSServerSearchOrder[0],interface.DNSServerSearchOrder[1]
                 #获取出网的ip地址、MAC地址、子网掩码、默认网关、DNS
def  web_status():
     ip  =  get_ip()
     idc_name  =  get_idcname(ip)
     url  =  "http://www.text.com/index.php?idc_ip=%s&idc_name=%s"  %  (ip,idc_name)
     get  =  urllib.urlopen(url)
     if  get.getcode()  = =  200 :
         aa  =  int (get.read().strip())
         if  aa  = =  1 :
             text  =  "Webservice return OK"
         else :
             text  =   "Webservice return Error"
     else :
         text  =  "Conect webservice Error"
     print  text
     log_w(text)
if  __name__  = =  "__main__" :
     web_status()

   一开始就要养成一个好习惯,这样对以后python编程是十分有益的。自己的深切体会。



本文转自 lover00751CTO博客,原文链接:http://blog.51cto.com/wangwei007/1239422,如需转载请自行联系原作者

相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
391 1
|
6月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
941 1
|
7月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
994 102
|
7月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
336 103
|
8月前
|
JSON 算法 API
深度分析小红书城API接口,用Python脚本实现
小红书作为以UGC内容为核心的生活方式平台,其非官方API主要通过移动端抓包解析获得,涵盖内容推荐、搜索、笔记详情、用户信息和互动操作等功能。本文分析了其接口体系、认证机制及请求规范,并提供基于Python的调用框架,涉及签名生成、登录态管理与数据解析。需注意非官方接口存在稳定性与合规风险,使用时应遵守平台协议及法律法规。
|
8月前
|
JSON API 数据安全/隐私保护
【干货满满】分享微店API接口到手价,用python脚本实现
微店作为知名社交电商平台,其开放平台提供商品查询、订单管理等API接口。本文介绍如何通过微店API获取商品到手价(含优惠、券等),涵盖认证机制、Python实现及关键说明。
|
7月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
282 82
|
8月前
|
JSON API 数据格式
深度分析大麦网API接口,用Python脚本实现
大麦网为国内领先演出票务平台,提供演唱会、话剧、体育赛事等票务服务。本文基于抓包分析其非官方接口,并提供Python调用方案,涵盖演出列表查询、详情获取及城市列表获取。需注意非官方接口存在稳定性风险,使用时应遵守平台规则,控制请求频率,防范封禁与法律风险。适用于个人学习、演出信息监控等场景。
|
6月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
266 4

推荐镜像

更多