python如何定义i_Python进阶-I 初识函数(function)

函数 在java中叫方法。

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

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。

但你也可以自己创建函数,这被叫做用户自定义函数。

1、补充文件的修改

实际上文件是不能修改的,文件的修改其实是,先备份旧的文件,然后修改备份的文件,接着删除旧文件,将

备份的文件改成旧的文件名,这样看来就像修改的原来的文件一样.

另外还要补充的是,对文件的操作模式中,不建议使用带'+'号的模式,写的时候就专门写,读的时候就专门读!

1 with open('d:\orders.txt', mode='r', encoding='utf-8') as f1, \2 open('d:\orders.txt.bak', mode='w', encoding='utf-8') as f2:3 f1_content =f1.read()4 f2.write(f1_content.replace('\n new content added', '\n new line'))5 #使用os修改删除旧文件,重命名新文件为旧文件名,必须放在with语句外边,否者报错,文件正在编辑!

6 importos7

8 os.remove('d:\orders.txt')9 os.renames('d:\orders.txt.bak', 'd:\orders.txt')

2、函数的定义 def:函数分内置函数和自定义函数,此处就是自定义函数

deffunc():print('hello func')

3、函数的调用

func()

4、函数的返回值 return

返回值的3种情况

没有返回值 —— 返回None

不写return

只写return:结束一个函数的继续

return None —— 不常用

返回1个值

可以返回任何数据类型

只要返回就可以接收到

如果在一个程序中有多个return,那么只执行第一个

返回多个值

用多个变量接收:有多少返回值就用多少变量接收

用一个变量接收: 得到的是一个元组

1 #1)使用return直接退出函数,函数内,其后面的语句不执行,相当于break

2 deffunc_return():3 print('func_return')4 return #也可带上None

5 print('haha')6 func_return()7 #2)返回值

8 deffunc_return_s():9 return [1, 2, 3]10

11 print(func_return_s())

5、函数的参数

1)、形参:有位置参数、可变参数(*args)、默认参数、可变关键字参数(**kargs)

2)、实参:按照位置传参、按照关键字传参

ContractedBlock.gif

ExpandedBlockStart.gif

1 def func_have_arg(arg): #此处的arg就是形式参数,即形参

2 print('你传入的参数是%s'%arg)3 func_have_arg(1) #此处的1就是实际参数,即实参

4

5 deffunc_have_args(arg1, arg2):6 print('你传入的参数是:{0}-{1}'.format(arg1, arg2))7 func_have_args('参数1', '参数2')8

9 def func_have_variable_args(*args): #可变参数,以元组形式传入函数中

10 print(args)11 func_have_variable_args(1, 2)12 func_have_variable_args(1, 2, '参数1', '参数2')13

14 def func_have_default_value(arg1, arg2='male'): #默认参数的顺序在可变参数后

15 print("含有默认参数的,不输入该参数就使用默认的值,输入就覆盖默认值!{0}-{1}".format(arg1, arg2))16 func_have_default_value('性别')17 func_have_default_value('性别', 'female')18

19 def func_have_keyword_variable_args(**kwargs): #可变关键字参数

20 print('可变关键字参数是:{0}'.format(kwargs))21 func_have_keyword_variable_args(name='tom', ginder="female")

View Code

3)、动态传参的另外一种方式

def func_dy(*args):#站在形参的角度上,给变量加上*,就是组合所有传来的值。

print(args)

func_dy(1,2,3,4,5)

l= [1,2,3,4,5]

func_dy(*l) #站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散#func_dy(**l) 可据上推导出关键字可变参数的传参方式

参数

没有参数

定义函数和调用函数时括号里都不写内容

有一个参数

传什么就是什么

有多个参数

位置参数

站在实参的角度上:

按照位置传参

按照关键字传参

混着用可以:但是 必须先按照位置传参,再按照关键字传参数

不能给同一个变量传多个值

站在形参的角度上

位置参数:必须传,且有几个参数就传几个值

默认参数: 可以不传,如果不传就是用默认的参数,如果传了就用传的

只有调用函数的时候

按照位置传 : 直接写参数的值

按照关键字: 关键字 = 值

定义函数的时候:

位置参数 : 直接定义参数

默认参数,关键字参数 :参数名 = '默认的值'

动态参数 : 可以接受任意多个参数

参数名之前加*,习惯参数名args,

参数名之前加**,习惯参数名kwargs

顺序:位置参数,*args,默认参数,**kwargs

动态参数有两种:可以接受任意个参数

*args : 接收的是按照位置传参的值,组织成一个元组

**kwargs: 接受的是按照关键字传参的值,组织成一个字典

args必须在kwargs之前

6、函数的注释

deffunc_comment(args):'''函数注释的演示

:param args: 可变的参数

:return: None'''

return None

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值