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

[经验分享] python知识点

[复制链接]

尚未签到

发表于 2017-4-22 08:51:48 | 显示全部楼层 |阅读模式
  backends = ['read_only2'] * 7 + ['default'] * 3

shuffle(backends)
  python API: http://epydoc.sourceforge.net/stdlib/index.html
  1. 安装,环境,解释器,版本

  python获取AP信息help(sys)
  2. 字面量,数据类型

  Python 有多种内置数据类型。以下是比较重要的一些:



  • Booleans[布尔型]
    或为 True[真]
    或为 False[假]


  • Numbers[数值型]
    可以是 Integers[整数](1
    和 2
    )、Floats[浮点数](1.1
    和 1.2
    )、Fractions[分数](1/2
    和 2/3
    );甚至是 Complex Number[复数]


  • Strings[字符串型]
    是 Unicode 字符序列,例如:
    一份 HTML
    文档。

  • Bytes[字节]
    Byte Arrays[字节数组]
    例如:
    一份 JPEG
    图像文件。

  • Lists[列表]
    是值的有序序列。

  • Tuples[元组]
    是有序而不可变的值序列。

  • Sets[集合]
    是装满无序值的包裹。

  • Dictionaries[字典]
    是键值对的无序包裹。
  "if not expression":
  None,0,空字符,false都能匹配:

if not 0:
print 'none'
if not []:
print 'none'
if not False:
print 'none'
if not '':
print 'nont'
if not None:
print 'nont'

   global关键字:

  如果你想要为一个定义在函数外的变量赋值,那么你就得告诉Python这个变量名不是局部的,而是 全局
的。我们使用global
语句完成这一功能。没有global
语句,是不可能为定义在函数外的变量赋值的。
  你可以使用定义在函数外的变量的值(假设在函数内没有同名的变量)。然而,我并不鼓励你这样做,并且你应该尽量避免这样做,因为这使得程序的读者会不清楚这个变量是在哪里定义的。使用global
语句可以清楚地表明变量是在外面的块定义的。 

#!/usr/bin/python
# Filename: func_global.py
def func():
global x
print 'x is', x
x = 2
print 'Changed local x to', x
x = 50
func()
print 'Value of x is', x
   3. 操作符表达式

  


  4. 控制流 if-elif-else-while



#!/usr/bin/python
# -*- coding: utf-8 -*-  
num = 20
guess = int(input('input number:'))

if num == guess:
print ('恭喜你,你猜对了')
elif num > guess:
print ('小了')
else:
print ('大了')

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

  这条语句表示置编码格式为utf-8。


  这个猜数字还不够友好,猜错一次程序就退出了,可以加上while。

#!/usr/bin/python
# -*- coding: utf-8 -*-  
num = 20
while True:
guess = int(input('input number:'))
if num == guess:
print ('恭喜你,你猜对了')
elif num > guess:
print ('小了')
else:
print ('大了')
  for循环加了else,很方便:


array = []
for i in array:
print i
else:
print 'array empty'
for i in range(1,5):
print i
for i in [1,2,3,4,5]:
print i

  
 
python 切片 [start:stop:step]
  "123456"[::-1]  654321
  "123456"[:3:1]  124
  "123456"[3::1] 456
  5.函数

   使用def定义函数


#/usr/bin/python
def sayHello():
print ('hello python')
sayHello()

   默认参数值


对于一些函数,你可能希望它的一些参数是可选的,如果用户不想要为这些参数

提供值的话,这些参数就使用默认值

#/usr/bin/python
def sayHello(str="fuck"):
print (str)
sayHello()
sayHello('come on')

  注意:

只有在形参表末尾的那些参数可以有默认参数值, 例如,def func(a, b=5) 是有效的,但是 def func (a=5, b) 是无效的。

  VarArgs 参数

  有时,你或许想定义一个能获取任意个数参数的函数,这可通过使用 * 号来实现。
  
Keyword-only


略。。。。。
  6.模块

  模块可以理解为java里面的jar包,可以从另外一个程序导入来使用其函数的功能。这也是我们使用 Python 标准库的方式。

#/usr/bin/python
import sys
print ('Thre command line arguments are:')
for i in sys.argv:
print (i)
print ('\n The PYTHONPATH is',sys.path,'\n')

   按字节编译的 .pyc 文件

导入一个模块相对来说是一个比较费时的事情,所以 Python 做了一些技巧,以便使输入模块更加快一些。一种方法是创建按字节编译的文件,这些文件以.pyc 作为扩展名。字节编译的文件与 Python 变换程序的中间状态有关—— 它会快得多,因为一部分输入模块所需的处理已经完成了。另外,这些字节编译的文件也是与平台无关的。所以,现在你知道了那些.pyc 文件事实上是什么了。

注释:

这些.pyc 文件通常与.py 文件相同的方式在相同路径被创建。如果 Python 没有写入当前路径的权限,.pyc 文件就不会被创建
  7.OOP


#!/usr/bin/python
class Person:
pass # empty block
p = Person()
print(p)

  pass 语句表示空白块
  __init__ 方法

__init__ 方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的初始化。

#!/usr/bin/python
class Person:
pass # empty block
def __init__(self,str):
print('init = '+str)
p = Person('jiangyunpeng')
  类和对象变量


有两种类型的域 —— 类的变量和对象的变量,它们根据是类还是对象拥有这个变量而区分。
  Python的继承方式和java不太一样,直接上代码

#!/usr/bin/python
class Base():
def hello(self):
print('base')
class Sub(Base):
def hello(self):
print('sub')
m = Sub()
m.hello()
   前面可以看到方面有个参数self,在pythonl里类的方法必须有个额外的第一个参数
(self
),但在调用这个方法的时候不必为这个参数赋值
.

class Python:
def test(self):
print('test')
p = Python()
p.test()
   这个特别的参数指代的是对象本身,而按照Python的惯例,它用self来表示。(当然我们也可以用其他任何名称来代替,只是规范和标准在那建议我们一致使用self)
  self在Python里不是关键字。self代表当前对象的地址。self能避免非限定调用造成的全局变量。
  6. io

  


  7.多线程

  
python是支持多线程的,并且是native的线程。主要是通过thread和threading这两个模块来实现的。python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用。


#!/usr/bin/python
# -*- coding: utf-8 -*-  
import string,threading,time
def thread_main(a):
global count,mutex
# 获得线程名
threadname = threading.currentThread().getName()
for x in xrange(0,int(a)):
# 取得锁
mutex.acquire()
count = count+1
# 释放锁
mutex.release()
print threadname,x,count
time.sleep(1)
def main(num):
global count,mutex
threads = []
count = 1
mutex = threading.Lock()
for x in xrange(0,num):
threads.append(threading.Thread(target=thread_main,args=(10,)))
for t in threads:
t.start()
for t in threads:
t.join()
if __name__ == '__main__':
# 创建4个线程
main(4)

   8.数组

  range,xrange 这两个基本上都是在循环的时候用。


for i in range(0, 100):

print i


for i in xrange(0, 100):

print i


这两个输出的结果都是一样的,实际上有很多不同,range会直接生成一个list对象:


a = range(0,100)

print type(a)

print a

print a[0], a[1]


而xrange则不会直接生成一个list,而是每次调用返回其中的一个值


a = xrange(0,100)

print type(a)

print a

print a[0], a[1]


所以xrange做循环的性能比range好,尤其是返回很大的时候!


尽量用xrange吧,除非你是要返回一个列表。
  更多:
  用python爬虫抓站的一些技巧总结

  http://woodpecker.org.cn/diveintopython3/native-datatypes.html

运维网声明 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-367564-1-1.html 上篇帖子: python大小写 下篇帖子: Python in相关知识
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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