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 import os
7 
8 os.remove('d:\orders.txt')
9 os.renames('d:\orders.txt.bak', 'd:\orders.txt')

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

def func():
    print('hello func')

3、函数的调用

func()

4、函数的返回值 return

返回值的3种情况
  没有返回值 —— 返回None
    不写return
    只写return:结束一个函数的继续
    return None —— 不常用
  返回1个值
    可以返回任何数据类型
    只要返回就可以接收到
    如果在一个程序中有多个return,那么只执行第一个
  返回多个值
    用多个变量接收:有多少返回值就用多少变量接收
    用一个变量接收: 得到的是一个元组

 1 # 1)使用return直接退出函数,函数内,其后面的语句不执行,相当于break
 2 def func_return():
 3     print('func_return')
 4     return  # 也可带上None
 5     print('haha')
 6 func_return()
 7 # 2)返回值
 8 def func_return_s():
 9     return [1, 2, 3]
10 
11 print(func_return_s())

5、函数的参数

1)、形参:有位置参数、可变参数(*args)、默认参数、可变关键字参数(**kargs)
2)、实参:按照位置传参、按照关键字传参
 1 def func_have_arg(arg):  # 此处的arg就是形式参数,即形参
 2     print('你传入的参数是%s'%arg)
 3 func_have_arg(1)  # 此处的1就是实际参数,即实参
 4 
 5 def func_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、函数的注释

def func_comment(args):
    '''
    函数注释的演示
    :param args: 可变的参数
    :return: None
    '''
    return None
扫描二维码关注公众号,回复: 7959906 查看本文章
 

猜你喜欢

转载自www.cnblogs.com/funyou/p/11921819.html