1.前言

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。

2.函数的定义

定义函数时需要遵守以下规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
  • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

语法:

def 函数名(参数1,参数2,参数3,...):
'''注释'''
函数体
return 返回的值

3.函数的调用

函数的调用:函数名加括号

  1. 先找到名字
  2. 根据名字调用代码

4.函数的参数

调用函数时可使用的正式参数类型:

  • 位置参数
  • 关键字参数
  • 默认参数
  • 不定长参数

位置参数

位置参数,也叫必需参数,在调用函数时位置参数必须传值,并且必须以正确的顺序和相同的数量传入传入。

def func(name,age):
print ('我叫%s,我今年%s岁了' %(name,age)) func('张三',18)
#输出
'我叫张三,我今年18岁了'

关键字参数

以“参数名 = 参数值”的形式作为传入函数称为关键字参数,使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

def func(name,age):
print ('我叫%s,我今年%s岁了' %(name,age)) func(age=18,name='张三')
#输出
'我叫张三,我今年18岁了'

默认参数

在定义函数时,如果某些参数的值不会经常变化,可以将其设置为默认参数,调用函数时,如果给默认参数传递了实参,则使用传递来的实参,如果没有传递实参,则会使用默认参数。

# age为默认参数,默认为18
def func(name,age=18):
print ('我叫%s,我今年%s岁了' %(name,age)) func(age=28,name='张三') #age传了28,则使用传来的28
func(name='李四') #age没有传参,则使用默认的18
#输出
'我叫张三,我今年28岁了'
'我叫李四,我今年18岁了'

不定长参数

如果需要传给函数的参数很多,并且在函数声明时不确定在调用时会传入多少个参数,这种情况下,就要使用到不定长参数了

不定长参数使用*args和**kwargs来接收:

  • 加单星号(*)的变量*args用来接收除去键值对以外的所有参数,以元组形式保存;
  • 加双星号(**)的变量**kwargs用来接收命名参数,即形如key=value的参数,以字典形式保存;
def func(a,b,*args,**kwargs):
print(a)
print(b)
print(args)
print(kwargs) func(1,2,3,4,5,6,w=7,j=8)
#输出
1
2
(3, 4, 5, 6)
{'w': 7, 'j': 8}

5.案例

编写一个求和函数,计算用户传入的所有参数之和,不能限制用户传入参数的个数

def sum(*args):
res = 0
for i in args:
res += i
return res print(sum(1,2))
print(sum(1,2,3,4,5,6,7,8,9))
#输出
3
45

python学习之【第八篇】:Python中的函数基础的更多相关文章

  1. Python学习第十八篇——低耦合函数设计思想

    import json 2 def greet_user(filename): 3 try: 4 with open(filename) as f_obj: 5 username = json.loa ...

  2. Python 学习笔记(八)Python列表(二)

    列表函数 追加和扩展 list.append() 在列表末尾追加新的对象 >>> dir(list) #dir 查看列表的函数 ['__add__', '__class__', '_ ...

  3. Python 学习笔记(八)Python列表(一)

    列表基本操作 列表(list)定义  列表是Python中的一种对象类型,也是一种序列 对象类型:list 表示方法:[ ] python 列表中的元素可以是任何类型的对象 >>> ...

  4. python学习之第八篇——字典嵌套之字典中嵌套字典

    cities = { 'shanghai':{'country':'china','population':10000,'fact':'good'}, 'lendon':{'country':'eng ...

  5. python学习【第八篇】python模块

    模块与包 模块的概念 在python中一个.py文件就是一个模块. 使用模块可以提高代码的可维护性. 模块分为三种: python标准库 第三方模块 自定义模块 模块的导入方法 1.import语句 ...

  6. Python学习【第八篇】Set集合

    Set集合 set集合是无序,不能重复,可嵌套的序列 如何创建 li = [] dic = {"k1":123} se = {"123","456&q ...

  7. Python之路(第八篇)Python内置函数、zip()、max()、min()

    一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算,如果全部都是true,就返回true, 但是如果是空字符串.空列表也返回t ...

  8. python学习笔记(八)python操作Excel

    一.python操作excel,python操作excel使用xlrd.xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的 ...

  9. Python 学习笔记(八)Python列表(三)

    序列 序列:数学上,序列是被排成一列的对象(或事件):这样,每个元素不是在器他元素之前,就是在其他元素之后.这里元素之间的顺序非常重要.<维基百科> 序列是Python中最基本的数据结构. ...

  10. 《Python 学习手册4th》 第十六章 函数基础

    ''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容 (每天看42页内容,可以保证月底看完此书) “重点 ...

随机推荐

  1. 超详细的FreeRTOS移植全教程——基于srm32

    ### 准备 在移植之前,我们首先要获取到FreeRTOS的官方的源码包.这里我们提供两个下载链接: > 一个是官网:http://www.freertos.org/ > 另外一个是代码托 ...

  2. ubuntu14.04 安装tensorflow始末

    基于ubuntu14.04 干净的系统一步步遇到的坑记录下来: 怀着平静学习的心情,问题总的能解决的! 1. 首先看了下当前python版本 python --version Python 2.7.6 ...

  3. NOIP2014联合权值

    无向连通图G有n个点,n-1条边.点从1到n依次编号,编号为i的点的权值为Wi  ,每条边的长度均为1.图上两点(u, v)的距离定义为u点到v点的最短距离.对于图G上的点对(u, v),若它们的距离 ...

  4. 【JZOJ4807】破解

    Description 历经千辛万苦,ddddddpppppp 终于找到了IBN5100. dp 事先了解到SERN 共有T 个密码,每个密码是一个长度为N 的01 串,他要利用IBN5100 的特殊 ...

  5. .net core 3.0 WPF中使用FolderBrowserDialog

    前言 随着.net core 3.0 的发布,WPF 也可以在 core 平台上使用了.当前的 WPF 不支持跨平台,仅能够在 Windows 平台上使用.如果想体验 WPF 跨平台开发,可以访问开源 ...

  6. 1002. 写出这个数 (20)-PAT乙级真题

    读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字.输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每一 ...

  7. JVM垃圾回收(上)

    Java 中的垃圾回收,常常是由 JVM 帮我们做好的.虽然这节省了大家很多的学习的成本,提高了项目的执行效率,但是当项目变得越来越复杂,用户量越来越大时,还是需要我们懂得垃圾回收机制,这样也能进行更 ...

  8. 关于sqlmapapi一点记录

    关于sqlmapapi自己练习的还是很少 今天看见freebuf上师傅的分享的内容 自己练习了一下 来自: https://www.freebuf.com/articles/web/204875.ht ...

  9. PHP stream_wrapper_register

    <?php /** * 引用:http://php.net/manual/en/function.stream-wrapper-register.php * 把变量当成文件读写的协议 * * C ...

  10. Android Studio 模拟器Intel 加速

    Starting emulator for AVD 'Phone1'emulator: ERROR: x86 emulation currently requires hardware acceler ...