我对Tech-Python Edition的热爱10件事

因此,由于我已经抱怨了我讨厌从多样性和文化的角度讨厌科技,我觉得我需要解释我对技术的所有事情以及为什么我会’想成为其他地方。

每个人都希望我从数据库或虚拟化开始,但我以为我’D让每个人都在他们的脚趾上,从我最喜欢的编程语言开始!

1.暂停,停止并等待

有时系统对于人类来说太快了。它’在任务之间具有适当延迟的重要性,使人们能够在适当的时间内互动或系统能够互相响应。这是在哪里“sleep”命令进来。就像在bash shell中一样,睡眠用于告诉命令等待:

@logged("%b %d %Y - %H:%M:%S")
def add2(x, y):
    time.睡觉(2)
    return x + y

以上的命令转化为“时间睡觉[以秒为单位],然后继续下一个命令[s]。”当您超越任务之间的空格而且是一个常见的命令’LL在任何Python程序中看到。

2.上下文经理

动态地写入文件或创建脚本的能力是任何编程语言的重要一项。我们根据需要编写和附加到文件,这是我们可以使用上下文管理的Python执行的。只需打开文件,写信给它,然后记住关闭它,(我没有’t add

>>>file = open(“/var/testfile.txt”,”w”) 
 
>>>file.write(“#Fix File Script”) 
>>>file.write(“mv /var/testfile.txt /usr/mvfile.sh”) 
>>>file.write(“chmod 774 /var/testfile.txt”) 
>>>file.write(“exit”) 
 
>>>file.close()

3.发电机

作为DBA,我们了解序列的值。我们在数据库中所有时间都使用它们,并使用simple命令创建它们:

CREATE SEQUENCE emp_seq
 START WITH     1
 INCREMENT BY   1;

在编程语言中,往往与Python一样简单,我们’通过以顺序方式再次通过函数进行各种任务。使用发电机有明显的要求,但其中一个是使用字产量,因为每个函数调用必须产生某种值。

>>> def f():
...   print("-- Ready --")
...   yield 1
...   print("-- Set --")
...   yield 2
...   print("-- Go --")
...   yield 3
>>> gen = f()
>>> next(gen)
-- Ready --
1
>>> next(gen)
-- Set --
2
>>> next(gen)
-- Go --
3

每个屈服值都存储在由此函数创建的对象中。正如你所看到的,这可能有点繁琐,所以我们如何用Python更简单地做到这一点?

4.迭代器

顺序和简单地执行某些东西的另一种方法是使用迭代器。虽然迭代器可以通过从列表中构建来节省大量时间 -

>>> f = [1, 2, 3]  
>>> iter(f)
<...iterator object at ...>
>>> f.__iter__()

我们可以通过使用文件作为迭代器来节省更多时间。是的,您听到了我 - 文件是迭代器,并且在任何时候它都不会创建一个单独的对象。请记住,此处只允许使用单个线程的顺序访问。

>>> f = open('/home/python/dbakevlar/file.txt')
>>> f is f.__iter__()
True
5.更换价值
有时显示哪些数据,是什么’您要返回的数据。这很容易改变Python以及为什么要使用这种通用语言。
>>> local = [80031, 80204, 80221] 
>>> "Westminster","Denver","Aurora" = local

>>> Westminster
80031 
>>> Denver
80204
>>> Aurora
80221
6.装饰函数
不,这并不是’意味着我们都成为玛莎斯图尔特,但这些是华丽的功能,使得很容易做很多很多。在Python中,装饰器是需要输入可选参数,函数或类的函数(或可以调用的对象),并返回函数或类。

 

from inspect import getargspec as gas   

def decorate(fn):
    argspec = gas(fn)
    scd_argname = argspec[0][1]
    def inner(*args, **kwargs):
        special_value = (kwargs[scd_argname] 
                         if scd_argname in kwargs else args[1])
        if special_value == 2:
            print "nada"
        else:
            print "nada happening"
        return fn(*args, **kwargs)
    return inner

@decorate
def nada(a, b, c=3):
    pass

nada(1,2,3)
nada(1,b=2,c=4)
nada(1,3,5)
nada(1,b=6,c=5)
请注意,Nada可以根据参数返回正确的值,并且与我们需要它需要一个给定的程序时,它是灵活的,在另一个功能中包装函数。
7.用范围打开包装
所以我’ve decided I’m工作的一系列10,但我’LL设置为第一个值为10,(从0开始,不是1,peeps),然后b可以在范围内的任何位置:
>>> a, *rest, b = range(10) 
>>> a 
0
>>> b 
9 
>>> rest [1, 2, 3, 4, 5, 6, 7, 8]
我们也可以说我们有这么做’■在我们的范围内的任何位置:
>>> *rest, b = range(10) 
>> rest 
[0, 1, 2, 3, 4, 5, 6, 7, 8] 
>>> b 
9
8.逆转任何字符串
有时你只需要扭转你所看到的东西。现在,用于颠倒在邮政编码上的搜索’通过颠倒邮政编码和索引来搜索以删除非常有价值“hot spots”在位置搜索。在Python中轻松反转数据的能力可以轻松实现:
>>> Geocode = "80031" 

>>> print a[::-1] 

13008
9.命名字符串格式
Python中文的格式非常简单。那里’没有很多复杂的补充,只需给一些参数名称即可!
print("The %(foo)s is %(bar)i." % {'foo': 'answer', 'bar':42})
答案总是42… 🙂
10.很酷的数学功能:
math.gcd(a)
返回所提供的值的最大分歧(GCD)。
math.isfinite(b)
如果x既不是无限位,也不是数字,则返回true,否则是false。有趣的是,0.0被认为是有限的。
min(a), max(b)

就像您期望的那样,这些函数返回最小值和最大值所示的值。

有更多的方式使Python成为教导任何人刚进入编程的语言,但它’S也强大地支持企业环境。

如果你 ’d想了解更多,我真的喜欢从以下网站的教程和幻灯片:

 

dbakevlar.

http://about.me/dbakevlar