精华内容
下载资源
问答
  • python中symbol
    2020-12-24 14:10:37

    # 需要导入模块: import symbol [as 别名]

    # 或者: from symbol import expr [as 别名]

    def com_try_except_finally(self, nodelist):

    # ('try' ':' suite

    # ((except_clause ':' suite)+ ['else' ':' suite] ['finally' ':' suite]

    # | 'finally' ':' suite))

    if nodelist[3][0] == token.NAME:

    # first clause is a finally clause: only try-finally

    return TryFinally(self.com_node(nodelist[2]),

    self.com_node(nodelist[5]),

    lineno=nodelist[0][2])

    #tryexcept: [TryNode, [except_clauses], elseNode)]

    clauses = []

    elseNode = None

    finallyNode = None

    for i in range(3, len(nodelist), 3):

    node = nodelist[i]

    if node[0] == symbol.except_clause:

    # except_clause: 'except' [expr [(',' | 'as') expr]] */

    if len(node) > 2:

    expr1 = self.com_node(node[2])

    if len(node) > 4:

    expr2 = self.com_assign(node[4], OP_ASSIGN)

    else:

    expr2 = None

    else:

    expr1 = expr2 = None

    clauses.append((expr1, expr2, self.com_node(nodelist[i+2])))

    if node[0] == token.NAME:

    if node[1] == 'else':

    elseNode = self.com_node(nodelist[i+2])

    elif node[1] == 'finally':

    finallyNode = self.com_node(nodelist[i+2])

    try_except = TryExcept(self.com_node(nodelist[2]), clauses, elseNode,

    lineno=nodelist[0][2])

    if finallyNode:

    return TryFinally(try_except, finallyNode, lineno=nodelist[0][2])

    else:

    return try_except

    更多相关内容
  • 理解和使用ES6Symbol

    千次阅读 2021-02-03 10:01:04
    摘自ES6引入了一种新的基础数据类型:Symbol,不过很多开发者可能都不怎么了解它,或者觉得在实际的开发工作并没有什么场景应用到它,那么今天我们来讲讲这个数据类型,并看看我们怎么来利用它来改进一下我们的...

    摘自

    ES6中引入了一种新的基础数据类型:Symbol,不过很多开发者可能都不怎么了解它,或者觉得在实际的开发工作中并没有什么场景应用到它,那么今天我们来讲讲这个数据类型,并看看我们怎么来利用它来改进一下我们的代码。

    这是一种新的基础数据类型(primitive type)

    Symbol是由ES6规范引入的一项新特性,它的功能类似于一种标识唯一性的ID。通常情况下,我们可以通过调用Symbol()函数来创建一个Symbol实例:let s1 = Symbol()

    或者,你也可以在调用Symbol()函数时传入一个可选的字符串参数,相当于给你创建的Symbol实例一个描述信息:let s2 = Symbol('another symbol')

    如果用当下比较流行的TypeScript的方式来描述这个Symbol()函数的话,可以表示成:/**

    * @param {any} description 描述信息。可以是任何可以被转型成字符串的值,如:字符串、数字、对象、数组等

    */

    function Symbol(description?: any): symbol

    由于Symbol是一种基础数据类型,所以当我们使用typeof去检查它的类型的时候,它会返回一个属于自己的类型symbol,而不是什么string、object之类的:typeof s1 // 'symbol'

    另外,我们需要重点记住的一点是:每个Symbol实例都是唯一的。因此,当你比较两个Symbol实例的时候,将总会返回false: let s1 = Symbol()

    let s2 = Symbol('another symbol')

    let s3 = Symbol('another symbol')

    s1 === s2 // false

    s2 === s3 // false

    应用场景1:使用Symbol来作为对象属性名(key)

    在这之前,我们通常定义或访问对象的属性时都是使用字符串,比如下面的代码:let obj = {

    abc: 123,

    "hello": "world"

    }

    obj["abc"] // 123

    obj["hello"] // 'world'

    而现在,Symbol可同样用于对象属性的定义和访问:const PROP_NAME = Symbol()

    const PROP_AGE = Symbol()

    let obj = {

    [PROP_NAME]: "一斤代码"

    }

    obj[PROP_AGE] = 18

    obj[PROP_NAME] // '一斤代码'

    obj[PROP_AGE] // 18

    随之而来的是另一个非常值得注意的问题:就是当使用了Symbol作为对象的属性key后,在对该对象进行key的枚举时,会有什么不同?在实际应用中,我们经常会需要使用Object.keys()或者for...in来枚举对象的属性名,那在这方面,Symbol类型的key表现的会有什么不同之处呢?来看以下示例代码:let obj = {

    [Symbol('name')]: '一斤代码',

    age: 18,

    title: 'Engineer'

    }

    Object.keys(obj) // ['age', 'title']

    for (let p in obj) {

    console.log(p) // 分别会输出:'age' 和 'title'

    }

    Object.getOwnPropertyNames(obj) // ['age', 'title']

    由上代码可知,Symbol类型的key是不能通过Object.keys()或者for...in来枚举的,它未被包含在对象自身的属性名集合(property names)之中。所以,利用该特性,我们可以把一些不需要对外操作和访问的属性使用Symbol来定义。

    也正因为这样一个特性,当使用JSON.stringify()将对象转换成JSON字符串的时候,Symbol属性也会被排除在输出内容之外:JSON.stringify(obj) // {"age":18,"title":"Engineer"}

    我们可以利用这一特点来更好的设计我们的数据对象,让“对内操作”和“对外选择性输出”变得更加优雅。

    然而,这样的话,我们就没办法获取以Symbol方式定义的对象属性了么?非也。还是会有一些专门针对Symbol的API,比如:// 使用Object的API

    Object.getOwnPropertySymbols(obj) // [Symbol(name)]

    // 使用新增的反射API

    Reflect.ownKeys(obj) // [Symbol(name), 'age', 'title']

    应用场景2:使用Symbol定义类的私有属性/方法

    我们知道在JavaScript中,是没有如Java等面向对象语言的访问控制关键字private的,类上所有定义的属性或方法都是可公开访问的。因此这对我们进行API的设计时造成了一些困扰。

    而有了Symbol以及模块化机制,类的私有属性和方法才变成可能。例如:在文件 a.js中const PASSWORD = Symbol()

    class Login {

    constructor(username, password) {

    this.username = username

    this[PASSWORD] = password

    }

    checkPassword(pwd) {

    return this[PASSWORD] === pwd

    }

    }

    export default Login在文件 b.js 中import Login from './a'

    const login = new Login('admin', '123456')

    login.checkPassword('123456') // true

    login.PASSWORD // oh!no!

    login[PASSWORD] // oh!no!

    login["PASSWORD"] // oh!no!

    由于Symbol常量PASSWORD被定义在a.js所在的模块中,外面的模块获取不到这个Symbol,也不可能再创建一个一模一样的Symbol出来(因为Symbol是唯一的),因此这个PASSWORD的Symbol只能被限制在a.js内部使用,所以使用它来定义的类属性是没有办法被模块外访问到的,达到了一个私有化的效果。

    注册和获取全局Symbol

    通常情况下,我们在一个浏览器窗口中(window),使用Symbol()函数来定义和Symbol实例就足够了。但是,如果你的应用涉及到多个window(最典型的就是页面中使用了),并需要这些window中使用的某些Symbol是同一个,那就不能使用Symbol()函数了,因为用它在不同window中创建的Symbol实例总是唯一的,而我们需要的是在所有这些window环境下保持一个共享的Symbol。这种情况下,我们就需要使用另一个API来创建或获取Symbol,那就是Symbol.for(),它可以注册或获取一个window间全局的Symbol实例:let gs1 = Symbol.for('global_symbol_1') //注册一个全局Symbol

    let gs2 = Symbol.for('global_symbol_1') //获取全局Symbol

    gs1 === gs2 // true

    这样一个Symbol不光在单个window中是唯一的,在多个相关window间也是唯一的了。

    https://juejin.im/post/5e16e08de51d453c8a6ad5c8

    展开全文
  • symbol-sdk-core-python:Symbol SDK核心python
  • Python中偏函数用法示例

    千次阅读 2020-12-03 16:51:39
    本文实例讲述了Python中偏函数用法。分享给大家供大家参考,具体如下:python中偏函数当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。比如,int()函数可以把字符串...

    本文实例讲述了Python中偏函数用法。分享给大家供大家参考,具体如下:

    python中偏函数

    当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。

    比如,int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换:

    >>> int('12345')

    12345

    但int()函数还提供额外的base参数,默认值为10。如果传入base参数,就可以做 N 进制的转换:

    >>> int('12345', base=8)

    5349

    >>> int('12345', 16)

    74565

    假设要转换大量的二进制字符串,每次都传入int(x, base=2)非常麻烦,于是,我们想到,可以定义一个int2()的函数,默认把base=2传进去:

    def int2(x, base=2):

    return int(x, base)

    这样,我们转换二进制就非常方便了:

    >>> int2('1000000')

    64

    >>> int2('1010101')

    85

    functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2:

    >>> import functools

    >>> int2 = functools.partial(int, base=2)

    >>> int2('1000000')

    64

    >>> int2('1010101')

    85

    所以,functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了。

    任务

    在第7节中,我们在sorted这个高阶函数中传入自定义排序函数就可以实现忽略大小写排序。请用functools.partial把这个复杂调用变成一个简单的函数:

    sorted_ignore_case(iterable)

    要固定sorted()的cmp参数,需要传入一个排序函数作为cmp的默认值。

    参考代码:

    #!/usr/bin/python

    #coding: utf-8

    import functools

    # cmp = lambda s1, s2: cmp(s1.upper(), s2.upper()) 最左边一定要有cmp = , 这样执行print的时候会执行

    # 匿名函数中的cmp函数,关于为什么使用cmp = ,请看上面的例子中,base = 2, 如果说没有base = 的话,结果

    # 肯定会出错

    # cmp函数释义:

    # cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1

    # 用于排序中,默认从小到大

    sorted_ignore_case = functools.partial(sorted, cmp = lambda s1, s2: cmp(s1.upper(), s2.upper()))

    print(sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit']))

    # 不使用偏函数的时候

    '''

    def cmp_ignore_case(s1, s2):

    u1 = s1.upper()

    u2 = s2.upper()

    if u1 > u2:

    return 1

    if u1 < u2:

    return -1

    return 0

    print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)

    '''

    运行结果:

    ['about', 'bob', 'Credit', 'Zoo']

    希望本文所述对大家Python程序设计有所帮助。

    展开全文
  • python库,解压后可用。 资源全名:symbol_sdk_core_python-2.0.0a507-py3-none-any.whl
  • Python基础之函数用法实例详解

    千次阅读 2020-12-03 16:52:46
    本文以实例形式较为详细的讲述了Python函数的用法,对于初学Python的朋友有不错的借鉴价值。分享给大家供大家参考之用。具体分析如下:通常来说,Python的函数是由一个新的语句编写,即def,def是可执行的语句--函数...

    本文以实例形式较为详细的讲述了Python函数的用法,对于初学Python的朋友有不错的借鉴价值。分享给大家供大家参考之用。具体分析如下:

    通常来说,Python的函数是由一个新的语句编写,即def,def是可执行的语句--函数并不存在,直到Python运行了def后才存在。

    函数是通过赋值传递的,参数通过赋值传递给函数

    def语句将创建一个函数对象并将其赋值给一个变量名,def语句的一般格式如下:

    def (arg1,arg2,arg3,……,argN):

    def语句是实时执行的,当它运行的时候,它创建并将一个新的函数对象赋值给一个变量名,Python所有的语句都是实时执行的,没有像独立的编译时间这样的流程

    由于是语句,def可以出现在任一语句可以出现的地方--甚至是嵌套在其他语句中:

    if test:

    def fun():

    ...

    else:

    def func():

    ...

    ...

    func()

    可以将函数赋值给一个不同的变量名,并通过新的变量名进行调用:

    othername=func()

    othername()

    创建函数

    内建的callable函数可以用来判断函数是否可调用:

    >>> import math

    >>> x=1

    >>> y=math.sqrt

    >>> callable(x)

    False

    >>> callable(y)

    True

    使用del语句定义函数:

    >>> def hello(name):

    return 'Hello, '+name+'!'

    >>> print hello('world')

    Hello, world!

    >>> print hello('Gumby')

    Hello, Gumby!

    编写一个fibnacci数列函数:

    >>> def fibs(num):

    result=[0,1]

    for i in range(num-2):

    result.append(result[-2]+result[-1])

    return result

    >>> fibs(10)

    [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

    >>> fibs(15)

    [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]

    在函数内为参数赋值不会改变外部任何变量的值:

    >>> def try_to_change(n):

    n='Mr.Gumby'

    >>> name='Mrs.Entity'

    >>> try_to_change(name)

    >>> name

    'Mrs.Entity'

    由于字符串(以及元组和数字)是不可改变的,故做参数的时候也就不会改变,但是如果将可变的数据结构如列表用作参数的时候会发生什么:

    >>> name='Mrs.Entity'

    >>> try_to_change(name)

    >>> name

    'Mrs.Entity'

    >>> def change(n):

    n[0]='Mr.Gumby'

    >>> name=['Mrs.Entity','Mrs.Thing']

    >>> change(name)

    >>> name

    ['Mr.Gumby', 'Mrs.Thing']

    参数发生了改变,这就是和前面例子的重要区别

    以下不用函数再做一次:

    >>> name=['Mrs.Entity','Mrs.Thing']

    >>> n=name #再来一次,模拟传参行为

    >>> n[0]='Mr.Gumby' #改变列表

    >>> name

    ['Mr.Gumby', 'Mrs.Thing']

    当2个变量同时引用一个列表的时候,它们的确是同时引用一个列表,想避免这种情况,可以复制一个列表的副本,当在序列中做切片的时候,返回的切片总是一个副本,所以复制了整个列表的切片,将会得到一个副本:

    >>> names=['Mrs.Entity','Mrs.Thing']

    >>> n=names[:]

    >>> n is names

    False

    >>> n==names

    True

    此时改变n不会影响到names:

    >>> n[0]='Mr.Gumby'

    >>> n

    ['Mr.Gumby', 'Mrs.Thing']

    >>> names

    ['Mrs.Entity', 'Mrs.Thing']

    >>> change(names[:])

    >>> names

    ['Mrs.Entity', 'Mrs.Thing']

    关键字参数和默认值

    参数的顺序可以通过给参数提供参数的名字(但是参数名和值一定要对应):

    >>> def hello(greeting, name):

    print '%s,%s!'%(greeting, name)

    >>> hello(greeting='hello',name='world!')

    hello,world!!

    关键字参数最厉害的地方在于可以在参数中给参数提供默认值:

    >>> def hello_1(greeting='hello',name='world!'):

    print '%s,%s!'%(greeting,name)

    >>> hello_1()

    hello,world!!

    >>> hello_1('Greetings')

    Greetings,world!!

    >>> hello_1('Greeting','universe')

    Greeting,universe!

    若想让greeting使用默认值:

    >>> hello_1(name='Gumby')

    hello,Gumby!

    可以给函数提供任意多的参数,实现起来也不难:

    >>> def print_params(*params):

    print params

    >>> print_params('Testing')

    ('Testing',)

    >>> print_params(1,2,3)

    (1, 2, 3)

    混合普通参数:

    >>> def print_params_2(title,*params):

    print title

    print params

    >>> print_params_2('params:',1,2,3)

    params:

    (1, 2, 3)

    >>> print_params_2('Nothing:')

    Nothing:

    ()

    星号的意思就是“收集其余的位置参数”,如果不提供任何供收集的元素,params就是个空元组

    但是不能处理关键字参数:

    >>> print_params_2('Hmm...',something=42)

    Traceback (most recent call last):

    File "", line 1, in

    print_params_2('Hmm...',something=42)

    TypeError: print_params_2() got an unexpected keyword argument 'something'

    试试使用“**”:

    >>> def print_params(**params):

    print params

    >>> print_params(x=1,y=2,z=3)

    {'y': 2, 'x': 1, 'z': 3}

    >>> def parames(x,y,z=3,*pospar,**keypar):

    print x,y,z

    print pospar

    print keypar

    >>> parames(1,2,3,5,6,7,foo=1,bar=2)

    1 2 3

    (5, 6, 7)

    {'foo': 1, 'bar': 2}

    >>> parames(1,2)

    1 2 3

    ()

    {}

    >>> def print_params_3(**params):

    print params

    >>> print_params_3(x=1,y=2,z=3)

    {'y': 2, 'x': 1, 'z': 3}

    >>> #返回的是字典而不是元组

    >>> #组合‘#'与'##'

    >>> def print_params_4(x,y,z=3,*pospar,**keypar):

    print x,y,z

    print pospar

    print keypar

    >>> print_params_4(1,2,3,5,6,7,foo=1,bar=2)

    1 2 3

    (5, 6, 7)

    {'foo': 1, 'bar': 2}

    >>> print_params_4(1,2)

    1 2 3

    ()

    {}

    相信本文所述对大家Python程序设计的学习有一定的借鉴价值。

    本文标题: Python基础之函数用法实例详解

    本文地址: http://www.cppcns.com/jiaoben/python/113430.html

    展开全文
  • python: symbol lookup error

    千次阅读 2019-03-28 11:51:57
    还是说一下环境吧: ubuntu16.04, cuda9.0,cudnn7.0,anaconda3.6,Python2.7,pytorch...python: symbol lookup error: /home/pc314/anaconda3/envs/py27/lib/python2.7/site-packages/torch/lib/libtorch_pytho...
  • 在上篇文章我们已经拿Python和R、Matlab对比了,显然Python在指定场景下确实优势非常明显,于是我又调研了一下Sympy与Mathematica的比较,在输入公式以及生成图表方面,Sympy确实不行(这一点Python有其他库来弥补...
  • python库。 资源全名:symbol-sdk-core-python-0.2.3a441.tar.gz
  • 我在树莓派安装了Py3.7然后装了PyQt5,当从其中import sip时会报如下错误 >>> from PyQt5 import sip Traceback (most recent call last): File "", line 1, in ImportError: /usr/local/python3/lib/python3.7/...
  • /usr/bin/python3: symbol lookup error: /usr/bin/python3: undefined symbol: XML_SetHashSalt 问题排查: 1、查看LD_LIBRARY_PATH的设置路径 echo $LD_LIBRARY_PATH 2、根据报错symbol lookup error: /...
  • # 需要导入模块: import symbol [as 别名]# 或者: from symbol import decorator [as 别名]def _get_forbidden_symbols():"""Returns a list of symbol codes representing statements that are *not*wanted in ...
  • python: symbol lookup error: /home/***/***/lib/python3.6/site-packages/torch/lib/libtorch_python.so: undefined symbol: PySlice_Unpack 这里据说是python版本的bug,之前我的python版本为3.6.0,后来改为...
  • 问题描述:今日在对py文件进行编译加密的时候,导入模块时提示undefined symbol: PyUnicodeUCS4_DecodeUTF8。 原因: python默认以UCS2形式编译,但模块是以UCS4编译的 验证:新建check.py import sys if sys....
  • } 如果使用GNU工具链,调用libstdc++库,通过readelf可以清楚看到: 000000000015 000f0000000a R_X86_64_32 0000000000000000 _ZSt4cout + 0 其中_ZSt4cout这个Symbol,通过c++filt _ZSt4cout能看得更清楚: std::...
  • 8.0.1.6/include) c++代码加入python的模块调用接口: #include #include #include #include #include "buffers.h" #include "NvInfer.h" #include #include "Hungarian.h" #include #include #include "opencv2/...
  • 内嵌Python import时undefined symbol错误及解决以下代码#include#include#includeintmain(intargc,char*argv[])...{Py_Initialize();PyRun_SimpleString("fromtimeimporttime, ctime/n""print'Todayis', ctime(tim....
  • 最近在捣鼓机器学习,学习学习tensorflow,做鸢尾花分类的时候用到from sklearn import datasets,结果在执行的时候就出现了白标题的错误,查了很久,终于找到了解决方案;出现这个问题的主要原因就是由于python...
  • Symbol 函数

    千次阅读 2017-02-15 09:38:51
    Symbol :每次返回的都是一个新的值; 1.Symbol是ES6引进的一种新的原始数据类型,表示一种独一无二的值; 2.Symbol值通过Symbol函数来生成,这就是说,现在的属性值有两种类型: 2.1 一种是原有的字符串的值; ...
  • 2017/3/12 32.4 symbol 用于Python解析树的常量 Python 3.6.1rc1文档 32.4symbol 用于Python解析树的常量 源代码 Lib / symbol.py 该模块提供表示解析树的内部节点的数值的常数与大多数Python常量不同 它们使用小写...
  • OPEN_TIME,CLOSE_TIME,SYMBOL,QUANTITY,PNL,OPEN_SIDE,CLOSE_SIDE,OPEN_PRICE,CLOSE_PRICE 2,7,AAPL,300,2247.00,B,S,32.58,40.07 2,12,GOOG,200,13200.00,S,B,1100.48,1034.48 10,12,GOOG,...
  • 针对Python 3的查询搜索最相似的字符串。采用最先进的算法和数据结构以实现最佳效率。 为了提高灵活性和效率,目前仅包括基于集合的相似性,包括和 。 为了简化代码,一些通用功能已移至新库。 是此库的一个有趣...
  • 在下载python pypolyagamma 包时遇到的问题(pycharm symbol not found) 学习过程,需要用到pypolyagamma package,但是出现bug ImportError: dlopen(/Users/zhaoxiaofan/Desktop/year4 sem2/3799/ts-rflvm-main/...
  • 【目标需求】 查看某一个字符串是否为中文字符串 【解决办法】 def check_contain_chinese(check_str): for ch in check_str: if u'\u4e00' <= ch <= u'\u9fff': return True ...—————–2018-07-27 更新...
  • 在使用python 使用调用第三方so库时 import ctypes cpp = ctypes.CDLL('./detector.so') 出现如下错误: Traceback (most recent call last): File “detection.py”, line 143, in face_detection(image_...
  • python: symbol lookup error: /opt/conda/envs/lh/lib/python3.9/site-packages/mkl/../../../libmkl_intel_thread.so.1: undefined symbol: __kmpc_global_thread_num 在模型运行过程中报如上错误,定位到了 mkl ...
  • python中特殊符号无法显示问题

    千次阅读 2022-02-05 14:26:35
    想实现用python列表功能来洗牌的程序,在网上查到黑桃、梅花、方块、红桃的对应字符分别是"\u2660", “\u2663”, “\u2665”, “\u2666” 但是在遍历列表打印花色的时候出现了问题: “Traceback (most recent call ...
  • 记录解决GPU上运行.../opt/conda/envs/torch-1.0/bin/python: symbol lookup error: /opt/conda/envs/torch-1.0/lib/python3.6/site-packages/torch/lib/libtorch_python.so: undefined symbol: PySlice_Unpac...
  • [aia256:15841] mca: base: component_find: unable to open /pds/opt/openmpi-1.8.7/lib64/openmpi/mca_shmem_posix: /pds/opt/openmpi-1.8.7/lib64/openmpi/mca_shmem_posix.so: undefined symbol: opal_shme

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,921
精华内容 14,368
关键字:

python中symbol