Python——函数

开始看Python也有一段时间了,但是之前一直是小打小闹,连函数都没用过,顶多用过几个内置函数就高兴到晚上能多吃一口饭#这大概会成为我长胖的借口了。

突然想着还是得写点东西,才能逼着自己去掌握。

先借这个位置挂一下某大佬的博客:某个除了系围巾什么都会的大佬

闲言少叙,还是回到主题上来。今天想写的是在Python中如何自定义函数。

'''

介于我只学过C++,所以只能和C++对比了,望大家谅解(顶锅盖逃走)。

'''

首先,先放一段代码。这个大概是最基础的了(✺ω✺)。

def function1(str):

    print(str)
    return
    
function1("function1")
function1("emmmmmmmm")

该代码无输入。输出为:

function1
emmmmmmmm

下面,想先谈谈Python和C++在自定义函数上的区别和联系。

①在Python中最大的特点(在我眼中),就是那个冒号,然后C++中也有一大特色就是分号。(真是遥相呼应(╯‵□′)╯︵┻━┻)如果没有加冒号的话--->就是报错啦:

  File "/usercode/file.py", line 1
    def function1(str)
                     ^
SyntaxError: invalid syntax
②在C++中一般自定义函数的时候,格式都是--》类型 函数名(类型 变量名1,类型 变量名2……)这样;但是在Python中,自定义函数一定要加上def(个人猜测是 Define Function 类似的意思吧)。但是呢,括号内到还放的是变量名。

③再有,就是那个return了,哪儿都有……也是绝了。

从上面的例子里,只能看出上面上面三点。再看下面的例子:(原来写过一篇A+B的文章,虽然可以直接用sum函数,但是自己写一个也无伤大雅不是)

def sum( arg1, arg2 ):
   # 返回2个参数的和."
   total = arg1 + arg2
   return total;

# 调用sum函数
total = sum( 10, 20 );
print ("10 + 20 = ", total)

说到这里,有不得不提起形参和实参了(考试之前背书背到绝望)。在C++中,有关形参和实参提到了很多,这里就简单提两句。比如:单向传递,地址传递etc.不一而足。但是呢,在这里还想再附一段Python的代码,再次说明这个问题:

def function2(a):
    a=10
    return a 
b=2 
function2(b)
print(b)


输出:

2

由此引出☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☞☟☟☟☟☟☟☟☟☟☟☟

可更改(mutable)与不可更改(immutable)对象

在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

  • 不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。

  • 可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。

python 函数的参数传递:

  • 不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。

  • 可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响

python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

------------------这里是分割线,以上写于2018/1/25------------------

猜你喜欢

转载自blog.csdn.net/karen_yu_/article/details/79165158