python学习之路(四) ---函数

一.函数的作用

当我们在写一个复杂的程序的时候,可以能会在很多地方上用到相同的功能,写起来代码量非常大,通过函数可以解决大量的代码冗余,我们只需要将各个功能封装到一个函数内,需要的时候就调用这个函数就可以,这样写起来的代码可读性也得到很大的提升,而且当我们后续需要增添新功能的时候也非常的方便,维护起来更加的方便.

二.内置函数和自定义函数

  •   内置函数

  python中为我们提供的许多的内置函数,可以到https://www.runoob.com/python/python-built-in-functions.html去查看.

  •   自定义函数 
def 函数名(参数1,参数2,参数3,...):
    ‘‘‘注释‘‘‘
    函数体
    return 返回的值

  函数名 : 函数的名字要反映一个函数的功能,函数的名字不能和python中的关键字一样,在python我一般会去下划线结合的名字,如:  def  hello_world():,当然驼峰式也可以.

     参数 : 参数可以没有,会详细讲到参数

   注释 : 在注释中我们可以大致讲一下函数的功能以及参数的含义和返回值的含义,方便以后阅读时更加的清晰和易于维护

     函数体 : 函数体里面就是我们要实现的功能的逻辑代码了

     返回值 : 当没有return时,函数的返回值默认为None

三.函数的参数

  • 形参和实参

   函数的形参即为变量名,而实参就是具体的变量值

def add(x, y):
    """
    这是一个加减运算的函数
    :param x: 第一个数
    :param y: 第二个数
    :return: 运算的结果
    """
    result = x + y
    return result

res = add(1, 2)print(res)

     其中x,y就是形参,而1, 2 就是实参

  • 位置参数 : 按照从左到右定义参数 
   位置形参:必须传值给形参
   位置实参:按照位置给形参传值,一一对应
def func(name, country):
    result = "%s爱%s" % (name, country)
    return result

res = func("我", "中国", "日本")
print(res)
"""
TypeError: func() takes 2 positional arguments but 3 were given"""
  • 关键字参数 : 实参按照key = value 的方式传值 

    使用关键字参数时无需按照位置来传参,但是需要注意的是,当同时存在未知参数和关键字参数时,未知参数一定要在关键字参数的前面,而且不能对一个形参赋多次值

def func(name, country):
    result = "%s爱%s" % (name, country)
    return result

res = func(country = ‘中国‘, "我")# 关键字参数在未知参数前面
print(res)

"""
SyntaxError: positional argument follows keyword argument
"""
def func(name, country,city):
    result = "%s爱%s%s" % (name, country,city)
    return result

res = func("我", city="湛江",country="中国",name="你")# 对名字赋值了两次
print(res)

"""
‘TypeError: func() got multiple values for argument ‘name‘
"""
  • 默认参数

       默认参数是在定义函数式就已经给形参赋值,目的是方便一些不怎么需要变化的的参数在传递实参不需要再赋值.,默认参数通常设为不可变类型,默认参数要放在非默认参数的后面,否则会报错.

def func(name, city, country="中国"):
    result = "%s爱%s%s" % (name, country, city)
    return result

res = func("我", city="湛江")
print(res)

""""
我爱中国湛江
""""

def func(name, city, country="中国"):
    result = "%s爱%s%s" % (name, country, city)
    return result

res = func("我", city="湛江", country="九州")
print(res)

""""
我爱九州湛江
""""

  • 可变长参数

   可变长参数是指实参的函数不确定,需要用特殊的参数来接收溢出的实参,具体有*args和**kwargs两种

   (1)   *args  ----可变长度的位置参数,存放在一个元组中

def func(x, y, *args):
    print(x, y)
    print(args)
    print(type(args))

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

""""
1 2
(3, 4, 5)
<class ‘tuple‘>
""""

    

    我们也可以在传递实参时通过*来解析一个列表或元组,

def func(x, y, *args):
    print(x, y)
    print(args)
    print(type(args))

func(1, 2, *(3, 4, 5))# *号必须加上,否则会将整个元组作为一个实参

""""
1 2
(3, 4, 5)
<class ‘tuple‘>
""""

(2)   *kwargs  ----可变长度的关键字参数,以键值对的形式存放在字典中

def func(x, y, **kwargs):
    print(x, y)
    print("kwargs : ", kwargs)
    print(type(kwargs))

func(1, y=2, z=3, g=4)

""""
1 2
kwargs :  {‘z‘: 3, ‘g‘: 4}
<class ‘dict‘>
""""

     同样我们也可以在传递实参时通过**来解析一个字典

 

def func(x, y, **kwargs):
    print(x, y)
    print("kwargs : ", kwargs)
    print(type(kwargs))

func(1, y=2, **{‘z‘: 3, ‘g‘: 4})

  

  • 命名关键字参数

   *后定义的参数,必须被传值(有默认值的除外),且必须按照关键字实参的形式传递,这样可以保证,传入的参数中一定包含某些关键字

def func(x, y, *, a=1, b, **kwargs):
    print("x,y : ", x, y)
    print("a : ", a)
    print("b : ", b)
    print("kwargs : ", kwargs)

func(1, 2, b=3)

""""
x,y :  1 2
a :  1
b :  3
kwargs :  {}
""""

原文地址:https://www.cnblogs.com/liangweijiang/p/11826290.html

时间: 2024-11-05 00:23:18

python学习之路(四) ---函数的相关文章

Python学习之路6?函数,递归,内置函数

一python中的函数 函数是逻辑结构化和过程化的一种编程方法. python中函数定义方法: def test(x): "The function definitions" x+=1 return x def:定义函数的关键字 test:函数名 ():内可定义形参 "":文档描述(非必要,但是强烈建议为你的函数添加描述信息) x+=1:泛指代码块或程序处理逻辑 return:定义返回值 调用运行:可以带参数也可以不带 函数名() 二 为何使用函数 背景提要 现在老

python学习之路03(函数)

到时再记录 3.内置函数-高阶函数 1.filter(func,sequence)接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新迭代器(在python3中),(在python2中就返回一个list) li = ['a','b','c'] def f(s): # 定义一个过滤函数 if s != 'a': return s re = filter(f,li)

Python学习之路:函数参数及调用

return:结束函数并返回值 没有return时:返回None 返回值数=1时:返回具体值 返回值是数字+字符串+列表等:返回一个元组 需要return是需要函数完整调用 def test1(): print('in the test1') def test2(): print('in the test2') return 0 #结束函数并返回0 def test3(): print('in the test3') return 1,'hello',['alex','wupeiqi'], {'

Python学习之路5 - 函数

函数 定义方式: def func(): "这里面写函数的描述" 这里写代码 return x #如果没有返回值就叫"过程",函数和过程的区别就是有无返回值 实例 def fun1(): "这里是测试" print('这是第一个函数') return 0 fun1() #调用函数 函数传参 def test(x,y,z): print(x) print(y) print(z) test(3,3,5) #这样传的参数叫做位置参数, 位置是一一对应的

python学习之路 四 :文件处理

本节重点 掌握文件的读.写.修改方法 掌握文件的处理模式的区别 一.文件读取 ?    ?1.读取全部内容 # 一次性读取文件 f = open("test.txt",'r',encoding='gbk') data = f.read() print(data)f.close() ?2.按行读取 # 按行读取 f = open("test.txt",'r',encoding='gbk') data = f.readline() print(data,end='')f

Python学习系列(四)(列表及其函数)

Python学习系列(四)(列表及其函数) Python学习系列(一)(基础入门) Python学习系列(二)(基础知识) Python学习系列(三)(字符串) 一.基本概念 1,列表是什么? 一种序列型数据类型,一有序数据集合用逗号间隔用方括号括起来. 2,几种访问形式 1)索引访问,语法结构:list_name[index].注意,列表的索引值从0开始.例如: 1 >>> li=[1,2,3,4,5] 2 >>> print li[2],li[0] 3 3 1 删除

Python学习之路——强力推荐的Python学习资料

资料一:程序媛想事儿(Alexia)总结 Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理内存使用.它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务. Python上手虽然容易,但与其它任何语言一样要学好Python并非一日之功.我的Pyth

Python 学习之路(二)

Python 学习之路(二) 以下所用的是Python 3.6 一.条件语句 简单判断 1 if 判断条件: 2 执行语句-- 3 else: 4 执行语句-- 复杂判断 1 if 判断条件1: 2 执行语句1-- 3 elif 判断条件2: 4 执行语句2-- 5 elif 判断条件3: 6 执行语句3-- 7 else: 8 执行语句4-- 二.循环语句 2.1 while语句 和其他语言一样,不同的是多了else语句.在 python 中,while - else 在循环条件为 false

Python 学习之路(三)

Python 学习之路(三) 以下所用的是Python 3.6 一.集合部分 集合是一个无序的,不重复的数据集合,主要用来去重,以及关系测试:交集,差集,并集等 1.1 关系操作 1.1.1 列表去重 可以给列表去重,例如: 1 set_demo = [1,2,3,4,5,3,2,1] # 列表 2 set_demo = set(set_demo) # 转换成集合,来去重 3 print(set_demo) 1.1.2 取交集 intersection()方法 可以获得两个集合的交集部分,例如: