Pthon Request库源码解读之__version__.py _internal_utils.py

发布时间:2023年12月28日

version.py代码如下:

__title__ = 'requests'
__description__ = 'Python HTTP for Humans.'
__url__ = 'http://python-requests.org'
__version__ = '2.21.0'
__build__ = 0x022100
__author__ = 'Kenneth Reitz'
__author_email__ = 'me@kennethreitz.org'
__license__ = 'Apache 2.0'
__copyright__ = 'Copyright 2018 Kenneth Reitz'
__cake__ = u'\u2728 \U0001f370 \u2728'

没啥好说的定义了Request类的基本信息

_internal_utils.py
代码如下:

# -*- coding: utf-8 -*-

"""
requests._internal_utils
~~~~~~~~~~~~~~

Provides utility functions that are consumed internally by Requests
which depend on extremely few external helpers (such as compat)
"""

from .compat import is_py2, builtin_str, str


def to_native_string(string, encoding='ascii'):
    """Given a string object, regardless of type, returns a representation of
    that string in the native string type, encoding and decoding where
    necessary. This assumes ASCII unless told otherwise.
    """
    if isinstance(string, builtin_str):
        out = string
    else:
        if is_py2:
            out = string.encode(encoding)
        else:
            out = string.decode(encoding)

    return out


def unicode_is_ascii(u_string):
    """Determine if unicode string only contains ASCII characters.

    :param str u_string: unicode string to check. Must be unicode
        and not Python 2 `str`.
    :rtype: bool
    """
    assert isinstance(u_string, str)
    try:
        u_string.encode('ascii')
        return True
    except UnicodeEncodeError:
        return False

这段代码主要定义了两个函数:to_native_string 和 unicode_is_ascii。下面是对这两个函数的详细解释:
to_native_string(string, encoding=‘ascii’)
这个函数接受一个字符串作为输入,并尝试将其转换为其本地的字符串表示形式。这里的“本地”指的是Python的内置字符串类型。

  • 首先,函数检查输入的字符串是否已经是内置的字符串类型。如果是,则直接返回该字符串。
  • 如果输入的字符串不是内置的字符串类型,函数会检查Python的版本。在Python 2中,字符串是字节串,而在Python 3中,字符串是Unicode串。
  • 如果在Python 2中运行此函数,它将使用提供的encoding参数对输入的字符串进行编码,转换为字节串。默认的编码是ASCII。
  • 如果在Python 3中运行此函数,它将使用提供的encoding参数对输入的字符串进行解码,转换为Unicode串。
  • 最后,函数返回转换后的字符串。

unicode_is_ascii(u_string)
这个函数接受一个Unicode字符串作为输入,并检查该字符串是否只包含ASCII字符。

  • 首先,函数通过断言确保输入的字符串确实是一个Unicode串(即Python 3中的str类型)。
  • 然后,它尝试使用ASCII编码对输入的字符串进行编码。如果编码成功,这意味着字符串只包含ASCII字符,函数返回True。
  • 如果在尝试编码时抛出UnicodeEncodeError异常,这意味着字符串包含非ASCII字符,函数返回False。

总结:这段代码提供了两种方式来处理和检查字符串:一种是将任何类型的字符串转换为本地字符串表示形式,另一种是检查一个Unicode串是否只包含ASCII字符。

文章来源:https://blog.csdn.net/qq_34399969/article/details/135267333
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。