Latest web development tutorials

Python3 ستاندرد المكتبة نظرة عامة

واجهة نظام التشغيل

وتقدم وحدة نظام التشغيل عددا من الوظائف المتعلقة بنظام التشغيل المرتبطة.

>>> import os
>>> os.getcwd()      # 返回当前的工作目录
'C:\\Python34'
>>> os.chdir('/server/accesslogs')   # 修改当前的工作目录
>>> os.system('mkdir today')   # 执行系统命令 mkdir 
0

نحن نوصي باستخدام أسلوب "نظام التشغيل استيراد" بدلا من "من نظام التشغيل استيراد *". هذا يضمن أن مع نظام التشغيل تختلف في os.open مختلفة () لا يلغي وظيفة المدمج في فتح ().

عند استخدام نظام التشغيل هذه وحدة كبيرة المدمج في دير () ومساعدة () وظائف مفيدة:

>>> import os
>>> dir(os)
<returns a list of all module functions>
>>> help(os)
<returns an extensive manual page created from the module's docstrings>

لملف وإدارة الدليل المهام اليومية،: وزارة الدفاع: وحدة shutil يوفر واجهة عالية المستوى التي هي أسهل للاستخدام:

>>> import shutil
>>> shutil.copyfile('data.db', 'archive.db')
>>> shutil.move('/build/executables', 'installdir')

ملف البدل

وتقدم وحدة غلوب وظيفة لجعل ملف القوائم من البحث في الدليل البدل:

>>> import glob
>>> glob.glob('*.py')
['primes.py', 'random.py', 'quote.py']

معلمات سطر الأوامر

مخطوطات فائدة مشتركة في كثير من الأحيان استدعاء معلمات سطر الأوامر. هذه الحجج سطر الأوامر كقائمة المخزنة في الوحدة sys متغير ARGV. يمكنك الحصول على ناتج المثال التالي، بعد تنفيذ "الثعبان demo.py واحد اثنين ثلاثة" في سطر الأوامر:

>>> import sys
>>> print(sys.argv)
['demo.py', 'one', 'two', 'three']

خطأ ناتج إعادة توجيه وإنهاء برنامج

تميز الكلية، وأيضا ستدين، المعياري وستدير خصائص، حتى عندما تم إعادة توجيه المعياري، وهذه الأخيرة يمكن أن تستخدم أيضا لعرض التحذيرات والرسائل خطأ.

>>> sys.stderr.write('Warning, log file not found starting a new one\n')
Warning, log file not found starting a new one

وتوجه معظم البرامج النصية لإنهاء استخدام "sys.exit ()".


مباراة سلسلة العادية

إعادة لالمتقدمة وحدة معالجة سلسلة يوفر أدوات التعبير العادية. لمطابقة معقدة والتلاعب، والتعبيرات العادية تقدم مختصرة والحلول الأمثل:

>>> import re
>>> re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')
['foot', 'fell', 'fastest']
>>> re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')
'cat in the hat'

إذا كنت بحاجة فقط وظيفة بسيطة، يجب عليك أن تنظر أولا في طريقة سلسلة، لأنها أسهل في القراءة والتصحيح:

>>> 'tea for too'.replace('too', 'two')
'tea for two'

الرياضيات

تقدم عائمة وحدة نقطة الرياضيات الوصول إلى مكتبة C الأساسية:

>>> import math
>>> math.cos(math.pi / 4)
0.70710678118654757
>>> math.log(1024, 2)
10.0

يوفر عشوائي أدوات لتوليد الأرقام العشوائية.

>>> import random
>>> random.choice(['apple', 'pear', 'banana'])
'apple'
>>> random.sample(range(100), 10)   # sampling without replacement
[30, 83, 16, 4, 8, 81, 41, 50, 18, 33]
>>> random.random()    # random float
0.17970987693706186
>>> random.randrange(6)    # random integer chosen from range(6)
4

الوصول إلى الإنترنت

هناك عدة وحدات للوصول إلى الإنترنت ومعالجة بروتوكولات الإنترنت. اثنين من أبسط هذه الطرق هي معالجة البيانات الواردة من عناوين المواقع وurllib.request smtplib لإرسال البريد الإلكتروني:

>>> from urllib.request import urlopen
>>> for line in urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl'):
...     line = line.decode('utf-8')  # Decoding the binary data to text.
...     if 'EST' in line or 'EDT' in line:  # look for Eastern Time
...         print(line)

<BR>Nov. 25, 09:43:32 PM EST

>>> import smtplib
>>> server = smtplib.SMTP('localhost')
>>> server.sendmail('[email protected]', '[email protected]',
... """To: [email protected]
... From: [email protected]
...
... Beware the Ides of March.
... """)
>>> server.quit()

لاحظ أن المثال الثاني يتطلب خادم البريد المحلي والتشغيل.


التاريخ والوقت

وحدة التاريخ والوقت للتاريخ والأوقات في كلا الاتجاهين البسيطة والمعقدة.

تاريخ الدعم والوقت الحساب، مع التركيز على تحقيق معالجة أكثر فعالية وتنسيق الانتاج.

كما يدعم وحدة المعالج المنطقة الزمنية:

>>> # dates are easily constructed and formatted
>>> from datetime import date
>>> now = date.today()
>>> now
datetime.date(2003, 12, 2)
>>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")
'12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.'

>>> # dates support calendar arithmetic
>>> birthday = date(1964, 7, 31)
>>> age = now - birthday
>>> age.days
14368

ضغط البيانات

الوحدات التالية تدعم مباشرة أرشفة وضغط صيغ البيانات المشتركة: زليب، GZIP، BZ2، zipfile، وtarfile.

>>> import zlib
>>> s = b'witch which has which witches wrist watch'
>>> len(s)
41
>>> t = zlib.compress(s)
>>> len(t)
37
>>> zlib.decompress(t)
b'witch which has which witches wrist watch'
>>> zlib.crc32(s)
226805979

مقاييس الأداء

أداء أساليب مختلفة لبعض المستخدمين لفهم المشكلة نفسها بين مهتمة جدا. يوفر بيثون أداة القياس التي توفر اجابات مباشرة على هذه الأسئلة.

على سبيل المثال، استخدام التعبئة الصفوف (tuple) وتفريغ عنصر صرف تبدو أفضل من استخدام الطرق التقليدية لأكثر جاذبية، أثبت النهج الحديث timeit أسرع.

>>> from timeit import Timer
>>> Timer('t=a; a=b; b=t', 'a=1; b=2').timeit()
0.57535828626024577
>>> Timer('a,b = b,a', 'a=1; b=2').timeit()
0.54962537085770791

مع timeit احترام غرامة الحبيبات ،: زارة الدفاع: صورة وحدة pstats يوفر قدرا من الوقت لكتل ​​أكبر من أداة التعليمات البرمجية.


وحدة اختبار

طريقة واحدة لتطوير تطوير البرمجيات عالية الجودة واختبار كل رمز وظيفة، وفي عملية التنمية في كثير من الأحيان اختبار

تقدم doctest وحدة يتم تنفيذ أداة لمسح وحدة والبرنامج جزءا لا يتجزأ من اختبار وثيقة سلسلة وفقا لل.

بناء اختبار بسيط مثل خفض انتاجها ولصق في سلسلة الوثائق.

على سبيل المثال المقدمة من قبل المستخدم، ويعزز وثيقة، مما يسمح حدة doctest للتأكد من يبقى رمز حقيقي وثائق:

def average(values):
    """Computes the arithmetic mean of a list of numbers.

    >>> print(average([20, 30, 70]))
    40.0
    """
    return sum(values) / len(values)

import doctest
doctest.testmod()   # 自动验证嵌入测试

على عكس doctest حدة unittest وحدة سهلة جدا للاستخدام، ولكن يمكن توفير مجموعة أشمل من الاختبارات في ملف منفصل:

import unittest

class TestStatisticalFunctions(unittest.TestCase):

    def test_average(self):
        self.assertEqual(average([20, 30, 70]), 40.0)
        self.assertEqual(round(average([1, 5, 7]), 1), 4.3)
        self.assertRaises(ZeroDivisionError, average, [])
        self.assertRaises(TypeError, average, 20, 30, 70)

unittest.main() # Calling from the command line invokes all tests