python学习笔记-刘亚平1
在Python编程语言中,与用户交互是至关重要的,这通常涉及到获取用户输入。在Python 2.x和3.x中,处理用户输入的方式有所不同。在本文中,我们将主要讨论`input()`和`raw_input()`这两个函数,以及它们在Python 3.x中的变化。 `input()`函数在Python 2.x中与`raw_input()`函数有着显著的不同。在Python 2.x中,`input()`函数会尝试执行用户输入的字符串作为Python表达式,这可能导致安全问题,因为它允许任意代码执行。相反,`raw_input()`函数则简单地返回用户输入的原始字符串,不做任何处理。然而,在Python 3.x中,`raw_input()`被`input()`所替代,其行为类似于Python 2.x中的`raw_input()`,即接收用户输入并返回字符串。 当用户输入纯数字时,`input()`函数在Python 3.x中会自动将其转换为相应的数值类型(如`int`或`float`)。例如,如果用户输入"123",`input()`将返回一个整数123。然而,如果输入包含运算符,如"1+1",`input()`会尝试计算这个表达式,返回2。而`raw_input()`(仅存在于Python 2.x)总是返回字符串,即使输入是数字,如"123",它会返回字符串"123"。 接下来,我们来看看Python的`urllib2`模块,这是用来处理HTTP请求的一个强大工具。基本的使用方法是创建一个`Request`对象,然后使用`urlopen`函数打开这个请求,从而获取服务器的响应。例如,下面的代码会向百度主页发送一个GET请求: ```python import urllib2 request = urllib2.Request("http://www.baidu.com") response = urllib2.urlopen(request) print(response.read()) ``` 当需要发送数据时,可以使用`urllib.urlencode`函数来编码数据,然后将其附加到请求中。例如,登录CSDN网站的代码片段: ```python import urllib import urllib2 values = {"username":"1016903103@qq.com","password":"XXXX"} data = urllib.urlencode(values) url = "https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn" request = urllib2.Request(url, data) response = urllib2.urlopen(request) print(response.read()) ``` `urlopen`返回的响应对象具有多个方法,如`read()`用于读取整个响应体,`readline()`读取一行,`readlines()`读取所有行,`fileno()`获取文件描述符,`close()`关闭连接,`info()`返回HTTP头部信息,`getcode()`返回HTTP状态码,`geturl()`返回请求的URL。 在进行HTTP请求时,有时需要设置自定义的HTTP头,例如模拟浏览器发送请求。这可以通过创建一个包含所需头信息的字典,并将其传递给`Request`对象的构造函数,或者使用`add_header`方法来实现。 我们简要介绍Python的`os`模块,它提供了一系列与操作系统交互的函数。`os.remove()`用于删除文件,`os.rename()`用于重命名文件或目录,`os.listdir()`列出目录下的所有文件,`os.chdir()`改变当前工作目录。这些函数使得Python程序能够执行常见的文件系统操作。 `input()`和`raw_input()`是处理用户输入的关键函数,而`urllib2`和`os`模块则是Python进行网络请求和文件操作的核心工具。理解这些函数和模块的工作原理对于编写功能丰富的Python应用程序至关重要。