82 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
title: The Python Range
 | 
						|
localeTitle: نطاق بايثون
 | 
						|
---
 | 
						|
## بايثون نطاقات
 | 
						|
 | 
						|
بدلاً من كونه دالة ، فإن النطاق هو في الواقع [نوع متسلسل غير قابل للتغيير](https://docs.python.org/3/library/stdtypes.html#immutable-sequence-types) ويشيع استخدامه لحل عدد محدد من المرات في الحلقات.
 | 
						|
 | 
						|
**خلق:**
 | 
						|
 | 
						|
يتم إنشاء `ranges` باستخدام منشئ `range` . المعلمات منشئ هي:
 | 
						|
 | 
						|
*   `start` : القيمة الأولى الشاملة للنطاق (عدد صحيح اختياري ، القيم الافتراضية إلى 0).
 | 
						|
*   `stop` : قيمة التوقف الحصرية ، يتوقف النطاق عند توفير هذه القيمة أو أكبر (العدد الصحيح المطلوب).
 | 
						|
*   `step` : القيمة المضافة إلى القيمة الحالية للحصول على القيمة التالية (عدد صحيح اختياري ، الإعداد الافتراضي إلى 1).
 | 
						|
 | 
						|
 `>>> range(10)          # Only the stop parameter is required. 
 | 
						|
 range(0, 10) 
 | 
						|
 >>> range(0, 10)       # Default for start parameter is 0. 
 | 
						|
 range(0, 10) 
 | 
						|
 >>> range(0, 10, 1)    # Default for step is 1\. Start parameter is required if 
 | 
						|
 step is needed. 
 | 
						|
 range(0, 10) 
 | 
						|
` 
 | 
						|
 | 
						|
**أمثلة:**
 | 
						|
 | 
						|
ونظرًا لأن `ranges` متكررة ، يمكن تمريرها إلى `list` `tuple` لإنشاء هذه الأنواع من التسلسلات. باستخدام هذه الحقيقة ، يمكننا تصور بعض الأمثلة:
 | 
						|
 | 
						|
 `>>> list(range(10))     # range as argument for list constructor. 
 | 
						|
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
 | 
						|
 >>> tuple(range(10))    # range as argument for tuple constructor. 
 | 
						|
 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) 
 | 
						|
` 
 | 
						|
 | 
						|
`ranges` طول الصفر:
 | 
						|
 | 
						|
 `>>> list(range(10, 0))        # start greater than stop with postive step. 
 | 
						|
 [] 
 | 
						|
 >>> list(range(10, 10))       # start equal to stop with postive step. 
 | 
						|
 [] 
 | 
						|
 >>> list(range(10, 10, -1))   # start equal to stop with negative step. 
 | 
						|
 [] 
 | 
						|
 >>> list(range(0, 10, -1))    # start less than stop with negative step. 
 | 
						|
 [] 
 | 
						|
` 
 | 
						|
 | 
						|
`ranges` مع وسيطات الخطوة:
 | 
						|
 | 
						|
 `>>> list(range(0, 10, 2))       # next value would be 10, stops at 8. 
 | 
						|
 [0, 2, 4, 6, 8] 
 | 
						|
 >>> list(range(0, 10, 3))       # next value would be 12, stops at 9. 
 | 
						|
 [0, 3, 6, 9] 
 | 
						|
 >>> list(range(0, 10, 4))       # next value would be 12, stops at 8. 
 | 
						|
 [0, 4, 8] 
 | 
						|
 >>> list(range(10, 0, -1))      # negative step makes decreasing ranges. 
 | 
						|
 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] 
 | 
						|
 >>> list(range(-5, -30, -3))    # negative integers are valid arguments. 
 | 
						|
 [-5, -8, -11, -14, -17, -20, -23, -26, -29] 
 | 
						|
` 
 | 
						|
 | 
						|
**فوائد:**
 | 
						|
 | 
						|
إن الفائدة من استخدام `range` هي أنه بغض النظر عن مدى نطاق معين ، فإن هناك حاجة إلى كمية صغيرة من الذاكرة لتخزين `range` ، وقيم البدء ، والتوقف ، والخطوة. يتم حساب القيم الفردية `ranges` عند التكرار.
 | 
						|
 | 
						|
 `>>> import sys 
 | 
						|
 >>> a_range = range(1000000) 
 | 
						|
 >>> a_list = list(a_range) 
 | 
						|
 >>> a_tuple = tuple(a_range) 
 | 
						|
 >>> sys.getsizeof(a_range) 
 | 
						|
 48 
 | 
						|
 >>> sys.getsizeof(a_list) 
 | 
						|
 9000112 
 | 
						|
 >>> sys.getsizeof(a_tuple) 
 | 
						|
 8000048 
 | 
						|
` 
 | 
						|
 | 
						|
### مزيد من المعلومات:
 | 
						|
 | 
						|
[بيثون دوك - النطاقات](https://docs.python.org/3/library/stdtypes.html#ranges)
 | 
						|
 | 
						|
**TODO: `ranges` الطرق لا تنفذ ولا تنفذ** |