设为首页 收藏本站
查看: 1035|回复: 0

[经验分享] Python基础知识汇总

[复制链接]

尚未签到

发表于 2018-8-10 09:03:04 | 显示全部楼层 |阅读模式
Python全局变量的使用方法
  应该尽量避免使用全局变量。不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性。对全局变量,如果程序员甲修改了_a的值,程序员乙同时也要使用_a,这时可能导致程序中的错误。这种错误是很难发现和更正的。
  全局变量降低了函数或模块之间的通用性,不同的函数或模块都要依赖于全局变量。同样,全局变量降低了代码的可读性,阅读者可能并不知道调用的某个变量是全局变量。
  但是某些时候,全局变量能够解决局部变量所难以解决的问题。事物要一分为二。
  python里面全局变量有两种灵活的用法:
  1 声明法
  在文件开头声明全局变量variable,
  在具体函数中使用该变量时,需要事先声明 global variable,否则系统将该变量视为局部变量。
  CONSTANT = 0
  (将全局变量大写便于识别)
  def modifyConstant() :
  global CONSTANT
  print CONSTANT
  CONSTANT += 1
  return
  if __name__ == '__main__' :
  modifyConstant()
  print CONSTANT
  2模块法(推荐)
  把全局变量定义在一个单独的模块中:
  #gl.py
  gl_1 = 'hello'
  gl_2 = 'world'
  在其它模块中使用
  #a.py
  import gl
  def hello_world()
  print gl.gl_1, gl.gl_2
  #b.py
  import gl
  def fun1()
  gl.gl_1 = 'Hello'
  gl.gl_2 = 'World'
  第二种方法,适用于不同文件之间的变量共享,而且一定程度上避免了开头所说的全局变量的弊端,推荐! ......
  =========================================================

Python获取元组和列表中的元素的方法
  print len(元组)
  print len(列表)
==============================
python获取当前路径的方法
  >>> import os
  >>> homedir = os.getcwd()
  >>> print homedir
  D:\python\test
  >>>
  >>> import sys
  >>> print sys.argv[0]
  D:\python\test\temp.py
  >>> print os.path.abspath(sys.argv[0])
  D:\python\test\temp.py
  >>>
  =====================================================
  Python定义及使用结构体
  Python中没有专门定义结构体的方法,但可以使用class标记定义类来代替结构体,其成员可以在构造函数__init__中定义,具体方法如下。
  # 例:定义及使用结构体
  class item:
  def __init__(self):
  self.name = ''     # 名称
  self.size = 10     # 尺寸
  self.list = []     # 列表
  a = item()      # 定义结构对象
  a.name = 'cup'
  a.size = 8
  a.list.append('water')
  ==========================================================
使用Python定义C风格结构体2011-05-18  18:55  使用C定义的结构体:
  struct ss {
  int num1;
  int num2;
  };
  使用Python定义的结构体
  from ctypes import *
  class ss(Structure):
  _fields_ = [
  ("num1", c_int),
  ("num2", c_int),
  ]
  测试:
  cstruct = ss()
  cstruct.num1 = 1
  cstruct.num2 = 2
  print cstruct.num1
  print cstruct.num2
  输出:
  1
  2
  ===========================================================
[转]制作Python的安装模块
  Python模块的安装方法:
  1. 单文件模块
  直接把文件拷贝到$python_dir/lib
  2. 多文件模块,带setup.py
  python setup.py install
  3. egg文件,类似Java的jar
  1) 下载ez_setup.py,运行python ez_setup
  2)  easy_install *.egg
  虽然Python的模块可以拷贝安装,但是一般情况下推荐制作一个安装包,即写一个setup.py文件来安装。
  setup.py文件的使用:
% python setup.py build #编译  % python setup.py install     #安装
  % python setup.py sdist      #制作分发包
  % python setup.py bdist_wininst  #制作windows下的分发包
  % python setup.py bdist_rpm
  setup.py文件的编写
setup.py中主要执行一个 setup函数,该函数中大部分是描述性东西,最主要的是packages参数,列出所有的package,可以用自带的find_packages来动态获取package。所以setup.py文件的编写实际是很简单的。  简单的例子:
  setup.py文件

DSC0000.gif from  setuptools  import  setup, find_packages

setup(

        name

= " mytest " ,
        version

= " 0.10 " ,
        description

= " My test module " ,
        author

= " Robin Hood " ,
        url

= " http://www.csdn.net " ,
        license

= " LGPL " ,
        packages

=  find_packages(),
        scripts

= [ " scripts/test.py " ],
        )


  mytest.py

import  sys


def  get():

return  sys.path


  scripts/test.py

import  os


print  os.environ.keys()  setup中的scripts表示将该文件放到 Python的Scripts目录下,可以直接用。
  OK,简单的安装成功,可以运行所列举的命令生成安装包,或者安装该python包。
  本机测试成功(win32-python25)!
  ======================================================
Python读取ini文件的包 「dict4ini」
  主页  http://code.google.com/p/dict4ini/
  描述:python 读取传统ini文件的扩展,详细实例 点击上面连接可见
  ========================================================
  使用Python的MD5模块比较两个文件是否一致
  在Python中内置了md5的实现,就是md5模块,因此可以很简单的处理比较两个文件是否一致的问题。如以下代码片断:
  import os,sys,md5
  f1 = open('f:/1.txt','r')
  f2 = open('f:/1.txt','r')
  print md5.new(f1.read()).digest() == md5.new(f2.read()).digest()
  以上处理在处理比较大的文件(比如几百M的文件)的时候会有内存问题。
  python的md5模块使用非常简单,包括以下几个函数:
  md5.new([arg])
  返回一个md5对象,如果给出参数,则相当于调用了update(arg)
  md5.updte(arg)
  用string参数arg更新md5对象
  md5.digest()
  返回16字节的摘要,由传给update的string生成,摘要没有ascii字符
  md5.hexdigest()
  以16进制的形式返回摘要
  代码示例:
  01.#!/usr/bin/python
  02.import sys
  03.import md5
  04.
  05.str=sys.argv[1]
  06.key = md5.new()
  07.key.update(str)
  08.print key.hexdigest()
  09.str=sys.argv[1]
  保存代码为md.py
  1.[fengyj@fengyj python]$ chmod +x md.py
  2.[fengyj@fengyj python]$ ./md.py fengyajie
  3.74d040444b8f20d37aa9b2bd2997cd64
  ===========================================================
  python提供了一个进行hash加密的模块:hashlib
  下面主要记录下其中的md5加密方式
  >>> import hashlib
  >>> m = hashlib.md5()
  >>> m.update("Nobody inspects")
  >>> m.update(" the spammish repetition")
  >>> m.digest()
  '\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
  >>> m.hexdigest()
  'bb649c83dd1ea5c9d9dec9a18df0ffe9'
  对以上代码的说明:
  1.首先从python直接导入hashlib模块
  2.调用hashlib里的md5()生成一个md5 hash对象
  3.生成hash对象后,就可以用update方法对字符串进行md5加密的更新处理
  4.继续调用update方法会在前面加密的基础上更新加密
  5.加密后的二进制结果
  6.十六进制结果
  如果只需对一条字符串进行加密处理,也可以用一条语句的方式:
  >>>print hashlib.new("md5", "Nobody inspects the spammish repetition").hexdigest()
  'bb649c83dd1ea5c9d9dec9a18df0ffe9'
  下面分别使用MD5和SHA进行加密:
  import hashlib
  a = "a test string"
  print hashlib.md5(a).hexdigest()
  print hashlib.sha1(a).hexdigest()
  print hashlib.sha224(a).hexdigest()
  print hashlib.sha256(a).hexdigest()
  print hashlib.sha384(a).hexdigest()
  print hashlib.sha512(a).hexdigest()
  还有一种base64加密:
  import base64
  str='haha'
  encoded = base64.b64encode(str)
  decoded = base64.b64decode(encoded)
  ------------------------------
  >>> print encoded
  aGFoYQ==
  >>> print decoded
  haha
  你会发现decoded == str
  ========================================================
python 查找文件夹下所有文件 收藏
view plaincopy to clipboardprint?

  • def find_file_by_pattern(pattern='.*', base=".", circle=True):
  •     '''''查找给定文件夹下面所有 '''
  •     re_file = re.compile(pattern)
  •     if base == ".":
  •         base = os.getcwd()

  •     final_file_list = []
  •     print base
  •     cur_list = os.listdir(base)
  •     for item in cur_list:
  •         if item == ".svn":
  •             continue

  •         full_path = os.path.join(base, item)
  •         if full_path.endswith(".doc") or \
  •             full_path.endswith(".bmp") or \
  •             full_path.endswith(".wpt") or \
  •             full_path.endswith(".dot"):
  •             continue

  •         # print full_path
  •         bfile = os.path.isfile(item)
  •         if os.path.isfile(full_path):
  •            if re_file.search(full_path):
  •                final_file_list.append(full_path)
  •         else:
  •            final_file_list += find_file_by_pattern(pattern, full_path)
  •     return final_file_list
  =============================================
python使用os.walk和os.path.join遍历文件夹的两种方法 DSC0001.gif 程序代码:import os  for root, dirs, files in os.walk('D:\\'):
  for file in files:
  print os.path.join(root, file)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-549477-1-1.html 上篇帖子: python dict按照value 排序 下篇帖子: python单例模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表