python函数

1.函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段

2.语法:
def 函数名(参数列表):   #函数名可以随意编写,但最好不要与内置函数重复,不然内置函数将被替换成你所定义的函数 
 函数体
 return XXX
可以返回多个值,返回的多个值组成一个元组,返回值加上一对中括号,则返回一个列表

在编程过程中可以定义自己想要实现的功能的函数,语法如下:

eg:
def test(x):                    #参数列表里的参数为形参  
    x=10  
    print('-----',x)  
x=5                             #这里的x为实参,虽然与形参一样,但是却是不同的两个值  
test(x)  
print('--+--',x) 
输出结果
----- 10  
--+-- 5 

3 可变参数和不可变参数
不可变类型为:字符串、元组和数值
可变类型为:列表、字典、集合。
在函数中对不可变参数重新赋值后,函数的输出结果则会输出新赋值,而对可变参数中的某个元素重新赋值后,可变参数本身没有动,只是将内部元素进行了修改。

eg:
def a(x):  
    x=10  
    print(x)  
s=1  
a(s)  
def b(y):  
    y[2]=14  
    print(y)  
k=[1,2,3,4,5,6]  
b(k)
输出结果:
10  
[1, 2, 14, 4, 5, 6] 

4 函数中的5种参数

       必需参数、默认参数、可变参数、命名关键字参数和关键字参数
语法: def 函数名(必需参数,默认参数,可变参数,命名关键字参数和关键字参数)
           函数体
      这5种参数都可以组合使用,除了可变参数无法和命名关键字参数混合。但是请注意,参数定义的顺序必须是:必需参数、默认参数、可变参数/命名关键字参数和关键字参数。

必需参数
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

默认参数
调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 age 参数,则使用默认值:

eg
def printinfo(name, age=35):
    print("名字: ", name)
    print("年龄: ", age)
    return
# 调用printinfo函数  
printinfo(age=30, name="Leo")
print("------------------------")
printinfo(name="Leo")
输出结果:
名字:  Leo  
年龄:  30  
------------------------  
名字:  Leo  
年龄:  35  

关键字参数与命名关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

eg:
def f2(a, b, c=0, *e, x, d,**kW):  
    print('a =', a, 'b =', b, 'c =', c, 'e=', e,'x=',x,'d=',d,'k =', kw)  
args = (1, 2, 3, 4)  
kw = {'d': 99, 'x': '#'}  
f2(*args,**kw) 
输出结果:
a = 1 b = 2 c = 3 e= (4,) x= # d= 99 k = {'d': 99, 'x': '#'}

不定长参数
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述参数不同,声明时不会命名。
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple元组
基本语法如下:

def a(*args):    #主要区别为加了‘*’符号   加了星号(*)的变量名会存放所有未命名的变量参数
    函数体  
    return 
eg: 
def kebiancanshu(*args):
    print(args)
nums=[1,2,3,4]
nums2=[2,3,5]
kebiancanshu(*nums,nums2)
kebiancanshu(*nums)
kebiancanshu(nums)          #nums整体作为一个元素带进去,函数认为上传个元素,即为一个元素组成的元组
输出结果:
(1, 2, 3, 4, [2, 3, 5])
(1, 2, 3, 4)
([1, 2, 3, 4],)

全局变量和局部变量

全局变量
在一个模块中最高级别的变量有全局作用域,除非被删除,否则能存活到程序运行结束。所有函数都能访问全局变量。

局部变量
定义在函数内的变量有局部作用域。
依赖于定义变量的函数现阶段是否处于活动状态。
调用函数时,局部变量产生,暂时存在。
一旦函数执行完,局部变量将会被释放。

注:
同一个函数中,不允许有同名局部变量
不同函数中,可以有同名局部变量
同一个程序中,全局变量和局部变量同名时,局部变量具有更高的优先级
但是有时候我们想要函数中修改外部作用域的变量时,就需要global方法来实现了。
eg:
num = 1  
def fun1():  
    global num  # 需要使用 global 关键字声明  
    print(num)   
    num = 2  
    print(num)  
fun1() 
输出结果:
1
2

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值