97 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			97 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Python Import Statements | |||
|  | localeTitle: Python导入语句 | |||
|  | --- | |||
|  | 在学习编程和阅读一些资源时,您会遇到“抽象”这个词,它只是意味着尽可能地减少和重用代码。 | |||
|  | 
 | |||
|  | 函数和模块有助于抽象。如果要在文件中重复执行某些操作,可以创建函数。 | |||
|  | 
 | |||
|  | 当您想要在不同的源文件中重用一组函数时,模块会出现。模块在构建程序时也很有用。 | |||
|  | 
 | |||
|  | *   使用标准库和其他第三方模块: | |||
|  | *   构建程序 | |||
|  | 
 | |||
|  | ## 使用标准库
 | |||
|  | 
 | |||
|  | 示例:您可以在官方Python文档中详细了解所有标准库的方法/功能。 | |||
|  | ``` | |||
|  | import time  | |||
|  |  for i in range(100):  | |||
|  |     time.sleep(1)   # Waits for 1 second and then executes the next command  | |||
|  |     print(str(i) + ' seconds have passed')  # prints the number of seconds passed after the program was started  | |||
|  | ``` | |||
|  | 
 | |||
|  |  [运行代码](https://repl.it/CS6C) | |||
|  | ``` | |||
|  | # To calculate the execution time of a part of program 
 | |||
|  |  import time  | |||
|  |  start = time.time()  | |||
|  |  # code here  | |||
|  |  end = time.time()  | |||
|  |  print('Execution time:' , end-start)  | |||
|  | ``` | |||
|  | 
 | |||
|  |  [运行代码](https://repl.it/CS6C/1) | |||
|  | ``` | |||
|  | # Using math Module 
 | |||
|  |  import math  | |||
|  |  print(math.sqrt(100))   # prints 10  | |||
|  | ``` | |||
|  | 
 | |||
|  |  [运行代码](https://repl.it/CS6C/2) | |||
|  | 
 | |||
|  | ## 使用第三方模块
 | |||
|  | 
 | |||
|  | 第三方模块没有与python捆绑在一起,但我们必须使用包管理器(如[`pip`](https://bootstrap.pypa.io/get-pip.py)和[`easy install`](https://bootstrap.pypa.io/ez_setup.py)在外部安装它 | |||
|  | ``` | |||
|  | # To make http requests 
 | |||
|  |  import requests  | |||
|  |  rq = requests.get(target_url)  | |||
|  |  print(rq.status_code)  | |||
|  | ``` | |||
|  | 
 | |||
|  | [在此处](http://docs.python-requests.org/en/master/)了解有关python-requests模块的更多信息 | |||
|  | 
 | |||
|  | ## 构建程序
 | |||
|  | 
 | |||
|  | 我们想要制作一个具有关于素数的各种函数的程序。让我们开始吧。我们将在`prime_functions.py`定义所有函数 | |||
|  | ``` | |||
|  | # prime_functions.py 
 | |||
|  |  from math import ceil, sqrt  | |||
|  |  def isPrime(a):  | |||
|  |     if a == 2:  | |||
|  |         return True  | |||
|  |     elif a % 2 == 0:  | |||
|  |         return False  | |||
|  |     else:  | |||
|  |         for i in range(3,ceil(sqrt(a)) + 1,2):  | |||
|  |             if a % i == 0:  | |||
|  |                 return False  | |||
|  |         return True  | |||
|  |   | |||
|  |  def print_n_primes(a):  | |||
|  |     i = 0  | |||
|  |     m = 2  | |||
|  |     while True:  | |||
|  |         if isPrime(m) ==True:  | |||
|  |             print(m)  | |||
|  |             i += 1  | |||
|  |         m += 1  | |||
|  |         if i == a:  | |||
|  |             break  | |||
|  | ``` | |||
|  | 
 | |||
|  | 现在我们想要使用我们刚刚在`prime_functions.py`创建的函数,因此我们创建了一个新文件`playground.py`来使用这些函数。 | |||
|  | 
 | |||
|  | > _请注意,这个程序太简单了,不能制作两个单独的文件,只是为了演示。但是当有大型复杂程序时,制作不同的文件确实非常有用。_
 | |||
|  | ``` | |||
|  | # playground.py 
 | |||
|  |  import prime_functions  | |||
|  |  print(prime_functions.isPrime(29)) # returns True  | |||
|  | ``` | |||
|  | 
 | |||
|  | ## 排序进口
 | |||
|  | 
 | |||
|  | 好的做法是将`import`模块分为三组 - 标准库导入,相关的第三方导入和本地导入。在每个组中,按模块名称按字母顺序排序是明智的。您可以[在PEP8中](https://www.python.org/dev/peps/pep-0008/?#imports)找到[更多信息](https://www.python.org/dev/peps/pep-0008/?#imports) 。 | |||
|  | 
 | |||
|  | Python语言最重要的一点是易读性,按字母顺序排序的模块可以更快地读取和搜索。此外,更容易验证某些内容是否已导入,并避免重复导入。 |