The best input is OUTPUT.

2016-04-30
Windows下py2与py3共存的方法

Windows下py2与py3共存的方法

现在的情况是我已经在我的系统中安装了python2.7以及ipython和其他我经常用的库。现在我需要在安装python3.5的解释器以及相应版本的ipython。

1. 安装python3.5.1

直接去官网下载后安装到默认路径下。我安装的路径为:

1
C:\Users\xy\AppData\Local\Programs\Python\Python35-32

在这路径下可以看到python3.5的所有,为了与之前的python2.7分开,我将python重命名为python3.exe

Read More

2016-04-22
python中的私有变量和私有成员函数

python中的私有变量和私有成员函数

python中类中并没有像C++中的public、private等关键字来定义类成员的访问权限(也就是所谓的访问控制符),但是python中也是有私有和公有变量的,他们使用特殊的变量名称来实现隐藏效果的。

python通过下划线作为变量的前缀来指定特殊变量:

  • _xxx:不能通过from import *导入到当前空间中
  • __xxx__:python 内定的名称
  • __xxx:私有变量名 相当于C++中的private关键字的作用。

于是我自己写了个小例子理解了一下python的私有变量的大概机制,先上例子:

Read More

2016-04-21
C++部分终于写差不多了,转移至python部分

C++部分终于写差不多了,转移至python部分

在C++中添加SitesMap完工.
新增了些测试,所有测试全部通过。。
下面开始搞python了,希望会快一些!

      .,——..
     /     `"

    ノ        \
   ノ          \
   |  /\  /\    |
   |          |
   \  ()    /
 ….—\       _/———.
|”    ‘ “    ..,-'     ‘|
' ̄ ̄ ̄\       / ̄ ̄ ̄'
     |       |
     \   |’ ̄\` |
     \   \   /
      \  \
_/
       \__、\

Read More

2016-04-15
为了组会临时写了个画三维网格的脚本

为了组会临时写了个画三维网格的脚本

这次组会之所以汇报KMCLib的原理,其中一个重要的原因是我想趁这个机会把看得东西进行总结,以免以后忘记了能够拿回来PPT快速回忆起来重要的东西。所以为了能够让下面的人听懂我在讲什么特地用python写了个绘制三维网格图的脚本,帮我节省了不少时间。不多扯了,进入主题吧。

三维网格主要是用来描述三维晶格的,因为KMCLib是一个可以模拟一维到三维的KMC模拟库,因此想要绘制三维图还是要结束matplotlib库的plot3d。同时还要配合着python的itertools提供的productcombinations函数,方便坐标的操作。
先倒入要用的库,然后创建figure对象和axes对象:

1
2
3
4
5
6
7
8
9
10
11
# -*- coding: utf-8 -*-
from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.mplot3d import proj3d
import matplotlib.pyplot as plt
import numpy as np
from itertools import product, combinations, permutations
import random

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_aspect("equal")

首先是三维网格的框架,先上一个效果图吧:

Read More

2016-04-06
初探SWIG对函数的封装

初探SWIG对函数的封装

看到KMCLib中在python中直接使用c++的函数,不禁又让我开始联想这是为什么,于是我就自己写个小测试看看swig是怎么封装函数的。

先定义两个C++函数:

1
2
3
4
5
// file: temp.h

int add(int a, int b);

double showg();

Read More

2016-04-05
SWIG对结构和类的封装

SWIG对结构和类的封装

为了能够将C++的类映射到目标语言,swig使用目标语言自动生成一个代理类(Proxy Class)来讲真正的C++类封装在里面,并通过使用一些accessor函数来使其看起来和用C++类一样的效果。

举个例子:
我有如下C++的类:

1
2
3
4
5
6
7
8
class Foo
{
public:
Foo();
~Foo();
int bar(int x);
int x;
};

代理类只是一种思想,可以用C++本身来实现一个代理类封装自己的类:
Read More