为啥我的这段python代码运行不出来结果,也没报错,跪求大神指点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我的这段python代码运行不出来结果,也没报错,跪求大神指点相关的知识,希望对你有一定的参考价值。
import sys
import os
import random
import networkx as nx
import matplotlib.pyplot as plt
from networkx.generators.classic import empty_graph
debug=True
#定义一个方法,它有两个参数:n - 网络节点数量;m - 每步演化加入的边数量
def barabasi_albert_graph(n, m):
# 生成一个包含m个节点的空图 (即BA模型中t=0时的m0个节点)
G=empty_graph(m)
# 定义新加入边要连接的m个目标节点
targets=range(m)
# 将现有节点按正比于其度的次数加入到一个数组中,初始化时的m个节点度均为0,所以数组为空
repeated_nodes=[]
# 添加其余的 n-m 个节点,第一个节点编号为m(Python的数组编号从0开始)
source=m
# 循环添加节点
while source<n:
# 从源节点连接m条边到选定的m个节点targets上(注意targets是上一步生成的)
G.add_edges_from(zip([source]*m,targets))
# 对于每个被选择的节点,将它们加入到repeated_nodes数组中(它们的度增加了1)
repeated_nodes.extend(targets)
# 将源点m次加入到repeated_nodes数组中(它的度增加了m)
repeated_nodes.extend([source]*m)
# 从现有节点中选取m个节点 ,按正比于度的概率(即度优先连接)
targets=set()
while len(targets)<m:
#按正比于度的概率随机选择一个节点,
x=random.choice(repeated_nodes)
#将其添加到目标节点数组targets中
targets.add(x)
#挑选下一个源点,转到循环开始,直到达到给定的节点数n
source += 1
#返回所得的图G
return G
#nx.draw(G)
#G.function()
#plt.show()
if __name__=='__main__':
barabasi_albert_graph(50,30)
没有看到对结果处理。所以就是运行完就结束了。可以搞个中间变量,把运行结果的值赋值给它,再把他打印出来。本回答被提问者和网友采纳
为啥 iPhone Developer's Cookbook 中的这段代码有效?
【中文标题】为啥 iPhone Developer\'s Cookbook 中的这段代码有效?【英文标题】:Why does this code from iPhone Developer's Cookbook work?为什么 iPhone Developer's Cookbook 中的这段代码有效? 【发布时间】:2009-08-09 00:31:02 【问题描述】:我一直在尝试 Erica Sadun 的《The iPhone Developer's Cookbook》一书中的一些视图代码,发现一些我不明白的代码。这是 loadView 方法的代码:
- (void)loadView
// Create the main view
UIView *contentView = [[UIView alloc] initWithFrame:
[[UIScreen mainScreen] applicationFrame]];
contentView.backgroundColor = [UIColor whiteColor];
self.view = contentView;
[contentView release];
// Get the view bounds as our starting point
CGRect apprect = [contentView bounds];
// Add each inset subview
UIView *subview = [[UIView alloc]
initWithFrame:CGRectInset(apprect, 32.0f, 32.0f)];
subview.backgroundColor = [UIColor lightGrayColor];
[contentView addSubview:subview];
[subview release];
我的问题是为什么她发布了 contentView,然后又在[contentView addSubview:subview]
中使用它? self.view = contentView
是否保留了 contentView?
【问题讨论】:
看起来不对。contentView
直到方法结束才会发布,所以这可能不会导致任何问题,但我无法想象你为什么会故意这样构建它。
并非如此。对 self.view 的赋值保留了 contentView,因此在创建对象后立即释放它是您可以得到的最接近的值。它是故意这样构建的,因为(在 Cocoa 范例中)视图控制器保留视图是有意义的。
【参考方案1】:
如果您查看 UIViewController 的文档,您会看到视图属性声明为:
@property(nonatomic, retain) UIView *view;
这意味着当您使用 setView: 方法(或使用 = 左侧的 .view)时,您传入的任何值都将被保留。因此,如果您查看代码并查看保留计数,您会得到:
- (void)loadView
// Create the main view
UIView *contentView = [[UIView alloc] initWithFrame:
[[UIScreen mainScreen] applicationFrame]]; //retain count +1
contentView.backgroundColor = [UIColor whiteColor]; //retain count +1
self.view = contentView; //retain count +2
[contentView release]; //retain count +1
// Get the view bounds as our starting point
CGRect apprect = [contentView bounds];
// Add each inset subview
UIView *subview = [[UIView alloc]
initWithFrame:CGRectInset(apprect, 32.0f, 32.0f)];
subview.backgroundColor = [UIColor lightGrayColor];
[contentView addSubview:subview];
[subview release];
我想说,真正有趣的是,释放 contentView 后,我们仍然可以向它发送消息,因为位于 contentView 指针末尾的对象仍然存在(因为它是通过调用 setView 保留的:)。
【讨论】:
这是正确的,但我个人避免这种风格/模式——如果在某个时候你决定将该属性从retain
更改为assign
,那么这段代码将自发地开始崩溃。当然,这不是 UIViewController.view 属性的问题,但是对于您自己的属性,它会在以后遇到麻烦。
是的,这正是它起作用的原因,而且它是一种可怕的形式。一旦你发布了一个特定的引用,你不应该再次使用它,它很容易出错。版本应该被移到最后,或者所有超出版本的 contentView 的外观都应该更改为 self.view。
它并不真正符合风格,除非“如果你像这样声明你的财产 @property(非原子,保留)... 那么是的,分配时保留该属性。这可能是怎么回事
【讨论】:
制定一个语法正确的答案并避免使用 IM 风格的缩写可能有助于避免未来的反对意见。 (我没有投反对票,我只是说......) 我知道,但是在输入来自 iPhone 的响应时很难大声笑,当我这样做时,我写的只是最低限度并且不能真正很好地制定代码,但我认为这个答案无论如何都会对提问者有所帮助,所以我贴出来以上是关于为啥我的这段python代码运行不出来结果,也没报错,跪求大神指点的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的程序运行一段时间后就没反应了,Tomcat也没报错,但是重新启动Tomcat后程序又能正常运行?