精华内容
下载资源
问答
  • 如果你Python 官方文档,以 Python 3.7.7 版本为例子,路径Python 3.7.7 documentation > Tutorial > 4. More Control Flow Tools > 4.6. Defining Functions(4.7. More on Defining Functions)我习惯...

    这大概是函数定义/参数相关知识吧,这是默认/可选参数。如果你是看 Python 的官方文档,以 Python 3.7.7 版本为例子,路径是:

    Python 3.7.7 documentation > Tutorial > 4. More Control Flow Tools > 4.6. Defining Functions(4.7. More on Defining Functions)

    我习惯用 Zeal 看离线文档,直接搜相关关键字就可以了:

    python3:Defining Functions />Defining Functions

    除了看官方文档,也可以读书,看相关章节的内容。手头上正好有一本书,《Python 编程无师自通 --专业程序员的养成》,这本书的第四章就是关于函数的内容。试着摘录一些必选及可选参数的描述:函数可接受两种参数。目前所看到的都是必选参数(required parameter)。当用户调 用函数时,必须传入所有必选参数,否则 Python 将报告异常错误。

    Python 中还有另一种参数,即可选参数(optional parameter)。函数只在需要时才会 传入,并不是执行程序所必须的。如果没有传入可选参数,函数将使用其默认值。使用 如下语法定义可选参数:函数名。与必选参数一样,可选参数 也得使用逗号分隔。一个带可选参数的函数示例如下:

    def f(x=2):

    return x ** x

    print(f()) # 4

    print(f(4)) # 256

    这一章的末尾部分有一小节是专门讲解函数相关术语的,我们在术语表中也可以看到关于参数的描述:参数:传递给函数的数据。

    必选参数:非可选参数。

    可选参数:非必须提供的参数。

    参考:

    Python 官方文档“Defining Functions”链接地址:

    https://docs.python.org/3.7/tutorial/controlflow.html#defining-functions​docs.python.org

    展开全文
  • Python中的None

    2019-03-20 13:44:03
    Python中,关键字None代表空值,也就是“什么都没有”的意思。None和数字 0、False、空字符串都不同,None是NoneType类型单例对象,而且只有None能够是NoneType类型。使用内置函数type可以查看标识符类型: &...

    在Python中,关键字None代表空值,也就是“什么都没有”的意思。None和数字 0、False、空字符串都不同,None是NoneType类型的单例对象,而且只有None能够是NoneType类型。使用内置函数type可以查看标识符的类型:

    >>> type(None)
    <class 'NoneType'>
    复制代码

    在Python中,None是一个单例对象,即有且仅有一个None对象:

    >>> a = None
    >>> b = None
    >>> a is b
    True
    复制代码

    你想过为什么判断一个对象是否为None要用is而不是==吗?

    在Python中,表达式a == b其实等价于a.__eq__(b)。也就是说,==运算符背后调用的是左边操作数对象的__eq__()方法,而此方法是可以被重载的:

    class Foo(object):
        def __eq__(self, other):
            return True
    
    a = Foo()
    print(a == None)  # True
    print(a is None)  # False
    复制代码

    所以说,使用is才能真正判断一个变量名是否指向内存中唯一的None对象。而等号只用于判断值是否相同,并不判断他们的对象标识符是否相同(使用内置函数id可以获取对象的对象标识符)。

    如果把None转换为布尔值,是真还是假呢:

    if None:
        print("None is True.")
    else:
        print("None is False.")
    复制代码

    上面这段程序的结果是False。所以None在显式或者隐式被转换为布尔值时,其值为False

    None的用处:

    1. 表示空值,例如:a = None使变量a指向None对象,表示这个变量是空的,类似C和C++中null
    2. Python中的函数如果没有返回语句,默认返回None,表示没有返回值,当然也可以显式地返回Nonereturn None

    Python交流学习群:532232743

    微信公众号:小鑫的代码日常

    转载于:https://juejin.im/post/5c92436cf265da611459b57f

    展开全文
  • <p style="text-align:center"><img alt="" height="235" src="https://img-ask.csdnimg.cn/upload/1612249088526.png" width="1353" /></p> 例如上面这个函数,...分别是什么意思?  </p>
  • 「@Author:BY Runsen」在Python 中的错误和异常是什么?通常来说,程序中的错误至少包括两种,一种是语法错误,另一种则是异常。语法错误所谓语法错误,你应该很清楚,也就是你写的代码不符合编程规范,无法被识别...

    「@Author:BY Runsen」

    在Python 中的错误和异常是什么?

    通常来说,程序中的错误至少包括两种,一种是语法错误,另一种则是异常。

    语法错误

    所谓语法错误,你应该很清楚,也就是你写的代码不符合编程规范,无法被识别与执行,比如下面这个例子的语法错误

    下面的代码无法被识别和执行if?name?is?not?None

    print(name)

    上面的代码If 语句漏掉了冒号,不符合 Python 的语法规范,所以程序就会报错invalid syntax。

    异常

    异常则是指程序的语法正确,也可以被执行,但在执行过程中遇到了错误,抛出了异常。

    比如,最常见的除数不能为0。变量没有定义。数据类型的运算。10?/?0

    Traceback?(most?recent?call?last):

    File?"",?line?1,?in?ZeroDivisionError:?integer?division?or?modulo?by?zero

    order?*?2

    Traceback?(most?recent?call?last):

    File?"",?line?1,?in?NameError:?name?'order'?is?not?defined

    1?+?[1,?2]

    Traceback?(most?recent?call?last):

    File?"",?line?1,?in?TypeError:?unsupported?operand?type(s)?for?+:?'int'?and?'list'

    上面报的是常见的报错,比如ZeroDIvision NameError 和 typeError

    还有很多其他异常的类型如keyError 字典的键找不到和FileNotFoundError 文件不存在

    try except

    使用Python的异常处理语句,可以非常优雅地处理发生的异常。

    下面是Python的异常处理语句的模板语法try:

    #?可能触发异常的语句块

    except:

    #?这里执行异常处理的相关代码,打印输出等

    else:

    #?如果没有异常则执行else中的代码

    finally:

    #?不管代码是否异常,都会执行,一般是资源的关闭和释放

    首先,检测try语句块中的错误,except语句捕获异常信息并处理。如果在try子句执行时没有发生异常,Python将执行else语句后的语句,然后控制流通过整个try语句。

    比如看下面的例子。try:

    print(a*2)

    except?TypeError:

    print("TypeError")

    except:

    print("Not?Type?Error?&?Error?noted")

    Not?Type?Error?&?Error?noted

    由于a没有定义,报的是NameError而不是TypeError。异常最终被except:部分的程序捕捉。

    这里,Runsen补充一下非常重要的知识点:

    抛出异常

    抛出异常模板:raise?异常类名(附加异常信息) 。下面是示例代码:s?=?"RunsenRunsen"

    try:

    if?len(s)?>?10:

    raise?Exception("超过10个字符")

    except?Exception?as?err:

    print(err)

    超过10个字符

    有时产生的异常,不想在当前处理,那么就可以使用raise抛出异常。下面是示例代码:def?division():

    a?=?float(input('输入被除数:'))

    b?=?float(input("输入除数:"))

    if?a?"我是Runsen,要求:输入的数不能小于0。")?#出现负数抛出异常。

    c?=?a?/?b

    print(a,'÷',b,'=',c)

    try:

    division()

    except?Exception?as?d:

    print('出错了,',d)

    运行结果:

    输入被除数:5

    输入除数:-1

    出错了,?我是小学生,输入的数不能小于0。

    输入被除数:5

    输入除数:0

    出错了,?float?division?by?zero

    万能异常

    因为异常分了不同的种类,如果不知道,那么使用exception异常处理就足够了,它可以接收任何异常value?=?'hello'

    try:

    int(value)

    #万能异常处理

    except?Exception?as?e:

    print(e)

    自定义异常

    实际开发中,有时候系统提供的异常类型不能满足开发的需求。这时候你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类,可以直接继承,或者间接继承。#?自定义异常类?MyError?,继承普通异常基类?Exception

    class?MyError(Exception):

    def?__init__(self,?value):

    self.value?=?value

    def?__str__(self):

    return?repr(self.value)

    try:

    num?=?input("请输入数字:")

    if?not?num.isdigit():??#?判断输入的是否是数字

    raise?MyError(num)??#?输入的如果不是数字,手动指定抛出异常

    except?MyError?as?e:

    print("MyError:请输入数字。您输入的是:",?e.value)

    请输入数字:1

    请输入数字:Runsen

    MyError:请输入数字。您输入的是:Runsen

    扩展

    大型社交网站的后台,需要针对用户发送的请求返回相应记录。用户记录往往储存在 key-value 结构的数据库中,每次有请求过来后,我们拿到用户的 ID,并用 ID 查询数据库中此人的记录,就能返回相应的结果。而数据库返回的原始数据,往往是 json string 的形式,这就需要我们首先对 json string 进行 decode(解码),你可能很容易想到下面的方法:import?json

    raw_data?=?queryDB(uid)?#?根据用户的 id,返回相应的信息。queryDB这里是一个函数

    data?=?json.loads(raw_data)

    上面的代码是不是就足够呢?

    json.loads()函数中,如果输入的字符串不符合规范,那么就无法解码,就会抛出异常。

    raw_data一定是json吗?,因此写之前就应该考虑如何处理异常try:

    data?=?json.loads(raw_data)

    except?JSONDecodeError?as?err:

    print('JSONDecodeError:?{}'.format(err))

    「附件:异常类列表(来源:菜鸟教程)」异常名称描述

    BaseException所有异常的基类

    SystemExit解释器请求退出

    KeyboardInterrupt用户中断执行(通常是输入^C)

    Exception常规错误的基类

    StopIteration迭代器没有更多的值

    GeneratorExit生成器(generator)发生异常来通知退出

    StandardError所有的内建标准异常的基类

    ArithmeticError所有数值计算错误的基类

    FloatingPointError浮点计算错误

    OverflowError数值运算超出最大限制

    ZeroDivisionError除(或取模)零 (所有数据类型)

    AssertionError断言语句失败

    AttributeError对象没有这个属性

    EOFError没有内建输入,到达EOF 标记

    EnvironmentError操作系统错误的基类

    IOError输入/输出操作失败

    OSError操作系统错误

    WindowsError系统调用失败

    ImportError导入模块/对象失败

    LookupError无效数据查询的基类

    IndexError序列中没有此索引(index)

    KeyError映射中没有这个键

    MemoryError内存溢出错误(对于Python 解释器不是致命的)

    NameError未声明/初始化对象 (没有属性)

    UnboundLocalError访问未初始化的本地变量

    ReferenceError弱引用(Weak reference)试图访问已经垃圾回收了的对象

    RuntimeError一般的运行时错误

    NotImplementedError尚未实现的方法

    SyntaxErrorPython 语法错误

    IndentationError缩进错误

    TabErrorTab 和空格混用

    SystemError一般的解释器系统错误

    TypeError对类型无效的操作

    ValueError传入无效的参数

    UnicodeErrorUnicode 相关的错误

    UnicodeDecodeErrorUnicode 解码时的错误

    UnicodeEncodeErrorUnicode 编码时错误

    UnicodeTranslateErrorUnicode 转换时错误

    Warning警告的基类

    DeprecationWarning关于被弃用的特征的警告

    FutureWarning关于构造将来语义会有改变的警告

    OverflowWarning旧的关于自动提升为长整型(long)的警告

    PendingDeprecationWarning关于特性将会被废弃的警告

    RuntimeWarning可疑的运行时行为(runtime behavior)的警告

    SyntaxWarning可疑的语法的警告

    UserWarning用户代码生成的警告

    展开全文
  • 洗牌来源:def shuffle(self, x, random=None, int=int):"""x, random=random.random -> shuffle list x in place; return None.Optional arg random is a 0-argument function returning a ...

    洗牌的来源:

    def shuffle(self, x, random=None, int=int):

    """x, random=random.random -> shuffle list x in place; return None.

    Optional arg random is a 0-argument function returning a random

    float in [0.0, 1.0); by default, the standard random.random.

    """

    if random is None:

    random = self.random

    for i in reversed(xrange(1, len(x))):

    # pick an element in x[:i+1] with which to exchange x[i]

    j = int(random() * (i+1))

    x[i], x[j] = x[j], x[i]

    样本来源:

    def sample(self, population, k):

    """Chooses k unique random elements from a population sequence.

    Returns a new list containing elements from the population while

    leaving the original population unchanged. The resulting list is

    in selection order so that all sub-slices will also be valid random

    samples. This allows raffle winners (the sample) to be partitioned

    into grand prize and second place winners (the subslices).

    Members of the population need not be hashable or unique. If the

    population contains repeats, then each occurrence is a possible

    selection in the sample.

    To choose a sample in a range of integers, use xrange as an argument.

    This is especially fast and space efficient for sampling from a

    large population: sample(xrange(10000000), 60)

    """

    # XXX Although the documentation says `population` is "a sequence",

    # XXX attempts are made to cater to any iterable with a __len__

    # XXX method. This has had mixed success. Examples from both

    # XXX sides: sets work fine, and should become officially supported;

    # XXX dicts are much harder, and have failed in various subtle

    # XXX ways across attempts. Support for mapping types should probably

    # XXX be dropped (and users should pass mapping.keys() or .values()

    # XXX explicitly).

    # Sampling without replacement entails tracking either potential

    # selections (the pool) in a list or previous selections in a set.

    # When the number of selections is small compared to the

    # population, then tracking selections is efficient, requiring

    # only a small set and an occasional reselection. For

    # a larger number of selections, the pool tracking method is

    # preferred since the list takes less space than the

    # set and it doesn"t suffer from frequent reselections.

    n = len(population)

    if not 0 <= k <= n:

    raise ValueError, "sample larger than population"

    random = self.random

    _int = int

    result = [None] * k

    setsize = 21 # size of a small set minus size of an empty list

    if k > 5:

    setsize += 4 ** _ceil(_log(k * 3, 4)) # table size for big sets

    if n <= setsize or hasattr(population, "keys"):

    # An n-length list is smaller than a k-length set, or this is a

    # mapping type so the other algorithm wouldn"t work.

    pool = list(population)

    for i in xrange(k): # invariant: non-selected at [0,n-i)

    j = _int(random() * (n-i))

    result[i] = pool[j]

    pool[j] = pool[n-i-1] # move non-selected item into vacancy

    else:

    try:

    selected = set()

    selected_add = selected.add

    for i in xrange(k):

    j = _int(random() * n)

    while j in selected:

    j = _int(random() * n)

    selected_add(j)

    result[i] = population[j]

    except (TypeError, KeyError): # handle (at least) sets

    if isinstance(population, list):

    raise

    return self.sample(tuple(population), k)

    return result

    如您所见,在两种情况下,随机化基本上都是通过int(random()* n)行完成的.因此,底层算法基本相同.

    展开全文
  • 通过help(sorted)查看sorted帮助文档,显示如下: Help on built-in function sorted in ...sorted(iterable, /, *, key=None, reverse=False) Return a new list containing all items from the iterable in ...
  • ![图片说明](https://img-ask.csdn.net/upload/202006/12/1591950709_507058.jpg) 如图 如果没有定义__getattribute__方法话就不会有这个报错 这什么
  • 下面进入正式部分条件判断与三元表达式python中只有if,if else,if elif,if elif else这几种组合,判断条件不是None,0,False就可以执行;如果借助elif就可以实现多分支判断:#条件判断 if elseage=66if age6 ...
  • python中[:,2]是什么意思

    万次阅读 2019-04-26 17:16:53
    numpy切片操作,一般结构如num[a:b,c:d],分析时以逗号为分隔符,逗号之前为要取num行下标范围(a到b-1),逗号之后为要取num列下标范围(c到d-1);如果这种num[:b,c:d],a值未指定,那么a为最小值0...
  • f后边只要跟那些非空字典、列表、字符串等,还有非负数,就是返回True; 如果if后边的是空(None,或者“0”,或者负数,就返回False 以上常见情况,特殊情况特殊分析
  • Python札记2:None

    2019-03-22 09:30:19
    Python中,关键字None代表空值,也就是“什么都没有”的意思。None和数字 0、False、空字符串都不同,None是NoneType类型单例对象,而且只有None能够是NoneType类型。使用内置函数type可以查看标识符类型: &...
  • 老猿在 《Python中函数参数带星号是什么意思?》中介绍了Python函数中参数带星号含义,而在实际使用和Python标准文档中,会看到某写函数其中一个参数就是星号(),而实际调用时该位置不用传值,这表示什么...
  • 老猿在 《Python中函数参数带星号是什么意思?》中介绍了Python函数中参数带星号含义,而在实际使用和Python标准文档中,会看...
  • Python中的**kwargs和*args这么理解

    千次阅读 多人点赞 2019-03-12 21:18:29
    Python中经常看到**kwargs和*args这么两个参数,例如下面groupby参数。 到底是什么意思呢? 怎么使用? DataFrame.groupby(by=None, axis=0, level=None, as_index= True, sort=True, group_keys=True, squeeze=...
  • Python函数的关键字参数 ...Python中函数的参数带星号是什么意思Python中函数是否能使用全局变量? Python中sorted(iterable, , key=None, reverse=False)函数参数定义中的独立星号()的含...
  • “ nyoibo”是什么意思? Nyoibo是他祖父Son Gohan送给Son Goku神秘工作人员。 用法 而不是这样做: class Example : def __init__ ( self , value = None , other_value = None , default = 'hello' ) self...
  • 事实上,它 Python 3 中的一个内置对象,有个正式的名字叫作——Ellipsis,翻译成中文就是“省略号”。 更准确地说,它一个内置常量(Built-in Constant), 6 大内置常量之一(另外几个 None、False、True...
  • ``` class Node(object): # self 当我们实例化一个对象情况下,再去调用这个函数时候,这个实例就是self def __init__(self, data, next = None):... Python中不声明对象类型,可以用任何类型吗还是什么意思
  • Python 编程艺术

    2013-05-12 14:34:00
    Python 编程艺术 1. Python 编程艺术享受高效无误且充满乐趣编程 2. def hello(): print hello world! 3. 什么函数返回 None...6. None 最好沉默 虽然 0 也不错,然而在 Python 默认返回值 Non...
  • 代码是这么写,请问上述代码{times:10, distance: 200}指的是什么? 在setTimeOut函数 我们为什么要写 $( "#effect-1" ).removeAttr( "style" ).hide().fadeIn(); 那么长一段代码,而不直接写$("#effect-1...
  • Python文件夹遍历

    2017-10-17 19:38:21
    **学习过程遇到了os模块walk函数,经过help查询帮助后大致明白了什么意思:** os.walk(top,topdown=True,onerror=None)需要三个参数,其中top必须给出路径变量,后两个可以不给,但是系统默认有值,就是...
  • python学习09-函数和函数式编程

    千次阅读 2016-05-26 15:52:24
    函数和函数式编程 函数会向调用者返回一个值, 而实际编程中大偏函数更接近过程,不显示地... 在 python , 对应返回对象类型是none。 简而言之,当没有显式地返回元素或者如果返回 None 时, python 会返回一个 Non
  • python爬虫笔记之re.IGNORECASE

    千次阅读 2018-02-28 21:52:00
    re.IGNORECASE是什么意思?(原谅我抓下seo。。)  这里自己总结下:  re.IGNORECASE是compile函数中的一个匹配模式。  re.IGNORECASE的意思就是忽略大小写。  example.  下图是没有添加re.IGNORECASE模式...
  • 11.1 什么是函数?...在Python中,对应返回对象类型是None。 当没有显式地返回元素或者如果返回None时,Python会返回一个None。那么调用者接收就是Python返回那个对象,且对象类型...
  • 在这种情况下,变体可以容纳int,float,单态(如Python中的None),unicode字符串,二进制数据,其他变体的数组或从字符串到变体的映射。 干净吗? API中只有(实际上)只有两个调用,并且它们都作用于。 他们...

空空如也

空空如也

1 2
收藏数 37
精华内容 14
关键字:

python中的none是什么意思

python 订阅