我正在巴黎大学教授一个研究生水平的Python课程,学生需要被引入标准库.我想与他们讨论一些最重要的标准模块.
你认为哪些模块绝对必须?尽管反应取决于你的域(web编程,科学等)可能会发生变化,我觉得有些模块通常需要:math,sys,re,os,os.path,logging,...也许:collections,struct,...
你会建议我在一个或两个小时的时间内出示什么模块?
我知道全局变量很糟糕.
但是,如果我使用节点的模块"UTIL"在我的框架40个文件,是不是更好,只是声明它像一个全局变量:
util = require('util');
Run Code Online (Sandbox Code Playgroud)
在index.js文件而不是在40个文件中写入该行?
因为我经常在每个文件中使用相同的5-10模块,这将节省大量的时间,而不是复制粘贴所有的时间.
在这种情况下DRY不好吗?
我担心这是解决问题的一种混乱方式,但......
假设我想根据某些条件在Python中进行一些导入.
出于这个原因,我想写一个函数:
def conditional_import_modules(test):
if test == 'foo':
import onemodule, anothermodule
elif test == 'bar':
import thirdmodule, and_another_module
else:
import all_the_other_modules
Run Code Online (Sandbox Code Playgroud)
现在我如何才能在全球范围内提供导入的模块?
例如:
conditional_import_modules(test='bar')
thirdmodule.myfunction()
Run Code Online (Sandbox Code Playgroud) 如何检查Perl模块是否是核心的一部分 - 即它是标准安装的一部分?
我在找:
也许问题应该是:如何判断最初在机器上安装特定 Perl的模块?(实际上,它现在被问到如何判断最初在机器上安装特定Perl的模块?)
鉴于现在似乎不是一个整体的Perl标准安装,至少这个新问题的答案将告诉我最初在安装时的安装.
有了这些知识,如果我保留原始的安装程序映像/包或者知道如何在线再次获取确切的东西,那么我可以为多台机器安装可重复的Perl,了解将出现哪些模块以及哪些模块不会出现.
为了进一步澄清:我在看什么就用原来的安装,提供了作为安装的一部分什么模块,什么是内置.不是从那以后安装的.
我希望能够在安装的机器上执行此操作.因此,我将依靠安装以某种形式记录它最初的内容.
我问分拆问题: 如何判断最初在机器上安装特定Perl的模块?(如何判断最初在计算机上安装特定Perl的模块?)
我在mixin模块中有一个恒定范围的问题.假设我有类似的东西
module Auth
USER_KEY = "user" unless defined? USER_KEY
def authorize
user_id = session[USER_KEY]
def
end
Run Code Online (Sandbox Code Playgroud)
除非已经定义,否则USER_KEY常量应默认为"user".现在我可以将它混合到几个地方,但在其中一个地方USER_KEY需要不同,所以我们可能会有这样的东西
class ApplicationController < ActionController::Base
USER_KEY = "my_user"
include Auth
def test_auth
authorize
end
end
Run Code Online (Sandbox Code Playgroud)
我希望USER_KEY在授权中使用时会是"my_user",因为它已经定义了,但它仍然是"user",取自USER_KEY的模块定义.任何人都知道如何授权使用USER_KEY的类版本?
可以从一个Module到另一个调用一个函数吗?
我有以下代码:
Sub MAIN()
Call IDLE
End Sub
Run Code Online (Sandbox Code Playgroud)
MAIN 位于 Module1IDLE位于Module2并定义为:Sub IDLE()我对角度相当新,并将其与JSON api文件一起使用.为了测试,我正在尝试使用免费的github api(我的函数名称是针对不同的json api,我将在稍后使用).我只是想看看我的功能是否正常console.log(),但我在控制台中收到此错误.
未捕获错误:[$ injector:modulerr]由于以下原因无法实例化模块MesaViewer:错误:[$ injector:nomod]模块'MesaViewer'不可用!您要么错误拼写了模块名称,要么忘记加载它.如果注册模块,请确保将依赖项指定为第二个参数.
我MesaViewer在两者中拼写完全相同,并且在第二行中看到了依赖关系!
var app = angular.module("MesaViewer");
var MainController = function($scope, $location, $http, $routeParams) {
Run Code Online (Sandbox Code Playgroud)
我做错了什么?这是我的插件:http: //plnkr.co/edit/sZPaFbzbOB6AmVCLL1vq
我从来没有注意到__path__今天之前在我的某些软件包上定义的属性.根据文件:
包支持另一个特殊属性
__path__.这被初始化为一个列表,其中包含在__init__.py执行该文件中的代码之前保存包的目录的名称.这个变量可以修改; 这样做会影响将来对包中包含的模块和子包的搜索.虽然通常不需要此功能,但它可用于扩展程序包中的模块集.
有人可以向我解释这究竟是什么意思以及为什么我会想要使用它?
我目前正在编写需要一个类os,stat和其他一些人.
在我班上导入这些模块的最佳方法是什么?
我正在考虑其他人何时会使用它,我希望在实例化类时已经导入了'依赖'模块.
现在我用我的方法导入它们,但也许有更好的解决方案.
在我需要一个模块并执行以下操作后,请说:
var b = require('./b.js');
--- do something with b ---
Run Code Online (Sandbox Code Playgroud)
然后我想拿掉模块b(即清理缓存).我怎么能这样做?
原因是我想在不重新启动节点服务器的情况下动态加载/删除或更新模块.任何的想法?
-------更多--------基于删除require.cache的建议,它仍然不起作用...
what I did are few things:
1) delete require.cache[require.resolve('./b.js')];
2) loop for every require.cache's children and remove any child who is b.js
3) delete b
Run Code Online (Sandbox Code Playgroud)
但是,当我打电话给b时,它仍然存在!它仍然可以访问.除非我这样做:
b = {};
Run Code Online (Sandbox Code Playgroud)
不确定它是否是处理它的好方法.因为如果以后再次要求('./b.js')b.js被修改.它是否需要旧的缓存b.js(我试图删除)或新的?
-----------更多发现--------------
好.我做了更多的测试和玩代码..这是我发现的:
1) delete require.cache[] is essential. Only if it is deleted,
then the next time I load a new b.js will take effect.
2) looping through require.cache[] and delete any entry in the
children with …Run Code Online (Sandbox Code Playgroud)