python学习之函数

一、函数的定义

def 函数名(形参):
      函数体
      return 返回值

注:形参和返回值不为一个,可以有多个形参和返回值。
二、函数的调用
函数名(实参)
实现打印返回值:print 函数名()
总结:
定义函数时,函数不执行;
调用函数时,函数才执行。
例1

# 定义函数
# 如果不主动调用函数,函数是不会执行的
def say_hello():
    print 'hello python'
# 函数调用
say_hello()
"""结果如下"""
# hello python

例2

# 定义函数时的变量,叫形参
def sum_2_sum(num1, num2):
    result = num1 + num2
    print '%d + %d = %d' % (num1, num2, result)
# 在调用函数的时候传递的参数称为实参
sum_2_sum(5, 20)
"""结果如下"""
# 25

总结:函数参数的使用,在函数名后面的小括号内填写参数,多个参数之间使用”,”分隔;形参和实参的个数必须一致。
三、函数变量的作用域
局部变量:在函数内部定义的普通变量,只在函数内部作用,函数执行结束后变量会自动删除
全局变量:所有代码执行完后才会释放
例1

a = 1
print 'outside:', id(a)
def fun():
    # global a  # 声明a为全局变量
    a = 5
    print 'inside:', id(a)
fun()
print a
print id(a)
"""结果如下"""
# outside: 24988776
# inside: 24988680
# 1
# 24988776

可以看到在函数执行之前打印的a的内存地址和在函数执行之后,再次打印的a的内存地址是一样的,因为a为全局变量。而在fun()函数内部定义的a的内存地址和外部是不一样的,函数内定义的a为局部变量,在函数执行结束后自动删除。若要使得在函数内部定义的变量可以使用global关键字,< global 变量名 > 即可声明一个变量为全局变量。
四、函数形参的四大参数
形参包含位置参数,默认参数,可变参数,关键字参数四种类型,接下来一一进举例和说明。
1.位置参数:形参和实参个数必须保持一致

def getInfo(name, age):
    print name, age
getInfo(age=12, name='tom')
"""结果如下"""
# tom 12

2.默认参数:形参和实参的个数可以不一致

def mypow(x, y=2):
    """
    求x的y次方,y的默认值为2,即若没有传递y的值,则认为y的值为2;若传递了y的值,即y的值为所传递值。
    """
    print x ** y
mypow(4)
# 默认参数可以改变
mypow(4, 3)
"""结果如下"""
# 16
# 64

3.可变参数:参数的个数任意,类型也任意

def mysum(*args):
    """
    *:args:是可变参数
    args:是元组数据类型
    args:名字可变(因为是形参)
    :param args:
    :return:
    """
    print args
    sum = 0
    for item in args:
        sum += item
    print sum
mysum(1, 2, 3, 4)
# 对list tuple set 解包时,只需要在变量前加*
num = [1, 2, 3, 44, 89]
num1 = (1, 2, 3, 4, 5)
num2 = {1, 2, 3}
# *num : 解包
mysum(*num1)
mysum(*num2)
"""结果如下"""
# (1, 2, 3, 4)
# 10
# (1, 2, 3, 4, 5)
# 15
# (1, 2, 3)
# 6

4.关键字参数:在原有参数基础上,可以接受任意多个参数

def getStuInfo(name, age, **kwargs):
    """
    **kwargs:是一个字典,可以传递任意多的key-value对
    :param name:
    :param age:
    :param kwargs:
    :return:
    """
    print name, age
    print kwargs getStuInfo('lily', 18, hobbies=['code', 'running'], gender='female') 
    getStuInfo('tom', 18) 
"""结果如下"""
# lily 18
# {'gender': 'female', 'hobbies': ['code', 'running']}
# tom 18
# {}

总结:在后面的开发中一般函数定义使用*args和**kwargs作为形参来接受传递的参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值