python函数

语法:

def myfunction():
    print('this is a function')

函数中带有参数

def myfunction(number):
    print('this is a function    ' + str(number))
myfunction(5)

我们在学习C语言的时候知道,实际参数给形式参数传递的时候以值的形式传递,因此对于形式参数的更改并不会对于实际参数造成影响。我们看看python的

def myfunction(number):
    number = 10
    print(number)

num = 100
myfunction(num)
print(num)

在这里插入图片描述
我们发现python中也出现了这种情况,那么要想改变实际参数的值怎么办?C语言中引入传地址,C++中引入 引用 。python中会怎么解决呢?
我们来看python中规定 :
对于基础数据类型,如int,float,str,boolean等,是值传递。传递的是数值。

对于复杂数据类型,如list,dict,set等,是址传递。传递的是引用

查了半天有两个方法:
1: 直接返回然后用实际参数接收(这实际上还是不是通过函数进行的改变,就是一个偷梁换柱的思想)

def pass_value(number):
    number = 10
    return number

test_number = 100

test_number = pass_value(test_number)

print(test_number)

2 : 用复杂的数据结构包一层

def pass_value(number):
    number[0] = 1

test_num = 10
packet = [test_num]
pass_value(packet)
print(packet[0])

函数带有默认参数值

def myfunc(count = "count"):
    print(count)
myfunc(1)

注意:这里的默认参数值可以和实际参数值类型不一致

任意参数

如果您不知道将传递给您的函数多少个参数,请在函数定义的参数名称前添加 *。

def my_function(*kids):
  print("The youngest child is " + kids[2])
my_function("Phoebe", "Jennifer", "Rory")

pass语句

函数定义不能为空,为空需要用pass代替

def myfunction:
  pass

递归

涉及函数就必须有递归
来看leetcode 斐波拉契数列
https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof/

class Solution {
public:
    int fib(int n) {
        if(n <= 1)
        {return n;}
        else
        {return fib(n-1) + fib(n-2);}
    }
};

python中写法

def fib(n):
        if (n <= 1):
            return n
        else:
            return fib(n-1) + fib(n-2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值