根据标题,是否有PHP相当于__name__ == "__main__"?
有什么东西适用于通过命令行和Web请求执行的脚本,还是需要自定义函数?
对于那些不熟悉Python的人来说,__name__ == "__main__"允许你定义一个模块文件,并且如果它是入口点,还有一些允许你运行它的东西.PHP中的等效结构类似于:
// SomeClass.php
<?php
class SomeClass
{
function doStuff() {
echo "wahey!\n";
}
}
// python, I know.
if (__name__ == "__main__") {
$sc = new SomeClass;
$sc->doStuff();
}
?>
// OtherClass.php
<?php
require_once("SomeClass.php");
class OtherClass
{
public $yep;
}
?>
// command line:
php SomeClass.php // outputs "wahey!"
php OtherClass.php // outputs nothing
Run Code Online (Sandbox Code Playgroud)
注意:zerkms的答案是最好的,但是不太正确 - 它应该是:
if (!debug_backtrace()) {
// do useful stuff
}
Run Code Online (Sandbox Code Playgroud)
这比!count(debug_backtrace())快得多,它本身的速度大约是我的涉及realpath()的解决方案的两倍.
在Python中,您可以使用使用访问对象的文档字符串obj.__doc__.Ruby中的等效动作是什么?
ruby python documentation language-comparisons ruby-on-rails
例如,如果我有一个名为add like的函数
def add(x,y):
return x+y
Run Code Online (Sandbox Code Playgroud)
我希望能够将字符串或输入转换为直接转换为该函数
w=raw_input('Please input the function you want to use')
Run Code Online (Sandbox Code Playgroud)
要么
w='add'
Run Code Online (Sandbox Code Playgroud)
有没有办法用w来引用函数add?
我在某种程度上得到它,但我还没有看到一个没有提出更多问题而不是答案的例子.
http://rhnh.net/2011/01/31/yaml-tutorial
# Set.new([1,2]).to_yaml
--- !ruby/object:Set
hash:
1: true
2: true
Run Code Online (Sandbox Code Playgroud)
我知道我们正在声明一个Set标签.我不知道后续哈希映射与它有什么关系.我们是在宣布架构吗?有人能给我看一个带有多个标签声明的例子吗?
我已经阅读了规范:http://yaml.org/spec/1.2/spec.html#id2761292
%TAG ! tag:clarkevans.com,2002:
Run Code Online (Sandbox Code Playgroud)
这是宣告架构吗?为了成功解析文件,解析器还需要做些什么吗?某种类型的模式文件?
http://www.yaml.org/refcard.html
Tag property: # Usually unspecified.
none : Unspecified tag (automatically resolved by application).
'!' : Non-specific tag (by default, "!!map"/"!!seq"/"!!str").
'!foo' : Primary (by convention, means a local "!foo" tag).
'!!foo' : Secondary (by convention, means "tag:yaml.org,2002:foo").
'!h!foo': Requires "%TAG !h! <prefix>" (and then means "<prefix>foo").
'!<foo>': Verbatim tag (always means "foo").
Run Code Online (Sandbox Code Playgroud)
为什么与主标记和辅助标记相关,为什么辅助标记引用URI?有这些问题正在解决什么问题?
我似乎看到很多"他们是什么",没有"为什么他们在那里",或"他们用于什么".
有很多关于正则表达式匹配可能空字符串的帖子,但我不能轻易找到任何提供只匹配空字符串的正则表达式.
我知道这^将匹配任何行的开头,$并将匹配任何行的结尾以及字符串的结尾.因此,/^$/匹配远远超过空字符串,如"\n","foobar \n \n"等.
不过,我会想到/\A\Z/只匹配空字符串,因为\A匹配字符串的开头并\Z匹配字符串的结尾.但是,我的测试表明它/\A\Z/也会匹配"\n".这是为什么?
我最近开始使用MySQL 5.7.10,我很喜欢原生的JSON数据类型.
但是在更新JSON类型值时遇到了问题.
问题:
下面是表格格式,这里我想在表格的JSON data列中再添加1个键t1.现在我必须获取值修改它并更新表.所以它涉及一个额外的SELECT声明.
我可以像这样插入
INSERT INTO t1 values ('{"key2":"value2"}', 1);
mysql> select * from t1;
+--------------------+------+
| data | id |
+--------------------+------+
| {"key1": "value1"} | 1 |
| {"key2": "value2"} | 2 |
| {"key2": "value2"} | 1 |
+--------------------+------+
3 rows in set (0.00 sec)
mysql>Show create table t1;
+-------+-------------------------------------------------------------
-------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------------------------------------------------------------------+
| t1 | CREATE TABLE `t1` (
`data` json DEFAULT NULL,
`id` …Run Code Online (Sandbox Code Playgroud) 我想在MySQL中将结果表转换为JSON数组,最好只使用普通的MySQL命令.例如查询
SELECT name, phone FROM person;
| name | phone |
| Jack | 12345 |
| John | 23455 |
Run Code Online (Sandbox Code Playgroud)
预期的JSON输出将是
[
{
"name": "Jack",
"phone": 12345
},
{
"name": "John",
"phone": 23455
}
]
Run Code Online (Sandbox Code Playgroud)
有没有办法在普通的MySQL中做到这一点?
编辑:
有一些答案如何使用例如MySQL和PHP,但我找不到纯MySQL解决方案.
我在Oracle SQL中遇到问题.
我first_name在employees表格中有一列.我想根据第一个字符对我的记录进行分组first_name.
例如,我有26条记录,一个用name = 'Alice',一用name = 'Bob',等下来的字母表每个名称的第一个字符.查询后,应该有26个组,每个组有一名员工.
我尝试了以下,但它不起作用:
SELECT employee_id, (SUBSTR(first_name,1,1)) AS alpha FROM employees
GROUP BY alpha;
name_which_starts_from employees
A 10
B 2
C 4
D 9
E 3
G 3
H 3
I 2
J 16
K 7
L 6
M 6
N 4
O 1
P 6
R 3
S 13
T 4
V 2
W 3
Run Code Online (Sandbox Code Playgroud) 我有一个包含子目录的git存储库.示例dirA/dirB.有没有办法git clone在Unix服务器上只从子目录(dirB)中提取文件?
除了克隆之外还有其他一些git命令可以执行此操作吗?
我如何git特定文件?
可能重复:
为什么在这种情况下不需要全局关键字?
我想知道为什么我可以在没有global关键字的情 为什么它对其他类型是强制性的?这背后有什么逻辑吗?
例如代码:
#!/usr/bin/env python3
stringvar = "mod"
dictvar = {'key1': 1,
'key2': 2}
def foo():
dictvar['key1'] += 1
def bar():
stringvar = "bar"
print(stringvar)
print(dictvar)
foo()
print(dictvar)
print(stringvar)
bar()
print(stringvar)
Run Code Online (Sandbox Code Playgroud)
给出以下结果:
me@pc:~/$ ./globalDict.py
{'key2': 2, 'key1': 1}
{'key2': 2, 'key1': 2} # Dictionary value has been changed
mod
bar
mod
Run Code Online (Sandbox Code Playgroud)
我期待的地方:
me@pc:~/$ ./globalDict.py
{'key2': 2, 'key1': 1}
{'key2': 2, 'key1': 1} # I didn't use global, so dictionary remains the same
mod
bar
mod
Run Code Online (Sandbox Code Playgroud)