跨编程语言
浅复制和深复制
当你把A复制到B,有两种可能
浅复制:只复制指针。更改B会改A
深复制:复制到另一个不同的地址。更改B不会改A
三种语言
C语言中,写函数时很明显。函数的参数若为
int
,则不会传地址进来,是深复制;若为int*
,则会传地址,是浅复制。MATLAB中,在函数中,若声明
global
,则会传地址进来,是浅复制;若什么操作都不做,则是深复制。Python中,若用
.copy()
,则为深复制;若什么操作都不做,则是浅复制。
匿名函数和普通函数
前者适合较短的、只用1次的函数,后者适合较长的、用多次的函数。
Python
1 | square = lambda x: x**2 |
MATLAB
1 | double = @(x) x * 2; |
R
1 | double <- function(x) { x * 2 } |
Julia
1 | double = x -> x * 2 |
C++
1 | auto double_fn = [](int x) { return x * 2; }; |
续行符
C++: \
MATLAB: ...
Python: \
R: +
多用函数
- 傻孩子,你想复制粘贴的时候就用函数,不然你怎么同时更改所有你复制粘贴的代码?!!!
- 写Machine Label这个小工程项目后,我发现,用函数的好处不仅仅是用来代替复制粘贴,还有
- 模块化,让流程更清晰。你可以清楚地看到每个模块的输入和输出
- 不同函数里可以用相同名称的局部变量,比如mask。否则,你就必须用mask_1,mask_2
scanf 和 printf 到底是啥的缩写?
scanf
stands for “scan formatted”, which is used to read formatted input from the standard input stream, such as keyboard input.
printf
stands for “print formatted”, which is used to output formatted data to the standard output stream, such as the console or terminal.
fscanf
stands for “file scan formatted”, which is used to read formatted data from a file.
fprintf
stands for “file print formatted”, which is used to output formatted data to a file.
C | MATLAB | Python |
---|---|---|
scanf | input | input |
printf | disp | |
fscanf | fscanf | read |
fprintf | fprintf | write |