我最近开始阅读Golang 规范手册,并试图理解相关部分中的命名和未命名类型.我来自一种动态的语言,这让我有点头疼.
手册说明:
类型确定特定于该类型值的值集和操作集.类型可以是命名的或未 命名的.命名类型由(可能合格的)类型名称指定 ; 使用类型文字指定未命名的类型,类型文字从现有类型组成新类型.
并继续:
预先声明了布尔,数字和字符串类型的命名实例.可以使用类型文字构造复合类型 - 数组,结构,指针,函数,接口,切片,映射和通道类型.
这里的问题是,随着规范的出现,这些链接让我跳到了页面上,并且忘记了那么多概念太快被我抛出的东西.
我已经四处寻找澄清,除了规范手册之外,资源很少.我能找到的唯一相关材料是:
不幸的是,我在Stack Overflow上找不到任何有关此问题的相关问题.(如果它们存在,我需要修改我的搜索方法!).我问,因为理解新语言的类型系统是有效学习它的基本概念之一.
有人可以提供一个简洁明了的例子,说明命名和未命名类型的概念之间的差异吗?*
*此外,解释合格和预先声明的概念将有利于完整性,但显然没有必要.
我设置了一个简单的自定义函数,它接受一些默认参数(Python 3.5):
def foo(a=10, b=20, c=30, d=40):
return a * b + c * d
Run Code Online (Sandbox Code Playgroud)
并且在有或没有指定参数值的情况下定时调用它:
没有指定参数:
%timeit foo()
The slowest run took 7.83 times longer than the fastest. This could mean that an intermediate result is being cached
1000000 loops, best of 3: 361 ns per loop
Run Code Online (Sandbox Code Playgroud)
指定参数:
%timeit foo(a=10, b=20, c=30, d=40)
The slowest run took 12.83 times longer than the fastest. This could mean that an intermediate result is being cached
1000000 loops, best of …Run Code Online (Sandbox Code Playgroud) 我正在使用Cython为Python的C库编写一个高级接口.
我有一个扩展类型A,它使用指向更复杂的C上下文结构的指针初始化库c_context.指针保存在A.
A还有一个def函数,它又创建另一个扩展类型B,用库函数调用初始化另一个C结构.进行后续库调用需要此结构B.
B需要c_context指针从A其通过我的扩展类型内包裹py_context,以便将其传递到__cinit__从B:
#lib.pxd (C library definitions)
cdef extern from "lib.h":
ctypedef struct c_context:
pass
#file py_context.pxd
from lib cimport c_context
cdef class py_context:
cdef c_context *context
cdef create(cls, c_context *context)
cdef c_context* get(self)
#file py_context.pyx
def class py_context:
@staticmethod
cdef create(cls, c_context *c):
cls = py_nfc_context()
cls.context = c
return cls
cdef c_context* get(self): …Run Code Online (Sandbox Code Playgroud) 我有Windows 10(64位).我想利用这个Openpyxl包开始学习如何与excel和其他电子表格进行交互.
我安装了Python,"windowsx86-64web-basedinstaller"我有64位操作系统,在尝试安装此版本时我错了吗?
我有一台托管Docker容器的ubuntu机器.在docker容器中我正在运行一个Web服务,它必须使用docker主机的/ etc/password验证用户的密码.
我的观点是从docker容器ssh到docker主机.所以当我在docker容器中运行命令ssh时,它的ssh未找到.所以,基本上ssh没有安装在容器中.我如何在容器中安装ssh.有没有办法完成这种情况?
我正在尝试运行此代码,但似乎exec()没有执行函数内的字符串:
def abc(xyz):
for i in fn_lst:
s = 'temp=' + i + '(xyz)'
exec(s)
print (temp)
abc('avdfbafadnf')
Run Code Online (Sandbox Code Playgroud)
我收到的错误:
NameError Traceback (most recent call last)
<ipython-input-23-099995c31c78> in <module>()
----> 1 abc('avdfbafadnf')
<ipython-input-21-80dc547cb34f> in abc(xyz)
4 s = 'temp=' + i + '(word)'
5 exec(s)
----> 6 print (temp)
NameError: name 'temp' is not defined
Run Code Online (Sandbox Code Playgroud)
fn_lst 是一个函数名称列表,即: ['has_at', 'has_num' ...]
exec()如果可能,请让我知道在这种情况下的替代方案。
在最近的Python 3.6版本中使用新的f字符串时,我注意到以下内容:
我们创建一个foo值为的变量bar:
>>> foo = 'bar'
Run Code Online (Sandbox Code Playgroud)然后,我们声明一个新变量,它是我们的f-string,它应该foo被格式化:
>>> baz = f'Hanging on in {foo}'
Run Code Online (Sandbox Code Playgroud)好的,一切正常,然后我们打电话baz来检查它的价值:
>>> baz
'Hanging on in bar'
Run Code Online (Sandbox Code Playgroud)让我们尝试更改值foo并baz再次调用:
>>> foo = 'spam'
>>> baz
'Hanging on in bar'
Run Code Online (Sandbox Code Playgroud)它不应该是动态的吗?为什么会这样?我认为如果foo改变了值,f-string会更新,但是这没有发生.我不明白这是如何工作的.
根据3.6.0文档:
CPython实现细节:在CPython 3.6及更高版本中,
__class__单元作为__classcell__类命名空间中的条目传递给元类.如果存在,则必须将其传播到type.__new__调用,以便正确初始化类.如果不这样做,将导致DeprecationWarningPython 3.6和aRuntimeWarning.
有人可以提供正确执行此操作的示例吗?
实际需要它的一个例子?
我想创建独特<client-key>和<client-secret>对谁登记自己的服务用户.
所以,我正在寻找相同的并提出这些选项:
这是一个愚蠢的问题,但我想知道哪个实现使用起来更安全(有正确的解释)?为什么?使用它比其他人有什么好处?
注意:
AFAIK,
random.SystemRandom()用途os.urandom(x).所以比较主要是uuid和random.SystemRandom().
这是我到目前为止所尝试的:
1)
import random
temp = random.SystemRandom()
random_seq = ''.join(temp.choice(CHARACTER_SET) for x in range(x))
>>> 'wkdnP3EWxtEQWnB5XhqgNOr5RKL533vO7A40hsin'
Run Code Online (Sandbox Code Playgroud)
2)
import uuid
str(uuid.uuid4())
>>> 'f26155d6-fa3d-4206-8e48-afe15f26048b'
Run Code Online (Sandbox Code Playgroud)
我不确定解决方案.所以,任何帮助将不胜感激.
PS
如果Python 2.x和3.x都有任何解决方案,那就太棒了.
我需要创建一个宏派生,其中名称是函数名称的一部分。(这段代码不起作用,只是为了说明问题)
fn impl_logic(ast: &syn::DeriveInput) -> TokenStream {
let name:&syn::Ident = &ast.ident;
let gen = quote! {
pub fn #name_logic() -> Arc<Mutex<UiAplicacion>> {
...
}
};
gen.into()
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
python ×7
python-3.x ×6
python-2.7 ×2
python-3.6 ×2
c ×1
class ×1
cython ×1
docker ×1
dockerfile ×1
exec ×1
f-string ×1
function ×1
go ×1
metaclass ×1
openpyxl ×1
pip ×1
random ×1
rust ×1
rust-macros ×1
sequence ×1
type-systems ×1
types ×1
unix ×1
wrapper ×1