python学习之【第八篇】:Python中的函数基础
1.前言
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。
2.函数的定义
定义函数时需要遵守以下规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
- 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
语法:
def 函数名(参数1,参数2,参数3,...):
'''注释'''
函数体
return 返回的值
3.函数的调用
函数的调用:函数名加括号
- 先找到名字
- 根据名字调用代码
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中的函数基础的更多相关文章
- Python学习第十八篇——低耦合函数设计思想
import json 2 def greet_user(filename): 3 try: 4 with open(filename) as f_obj: 5 username = json.loa ...
- Python 学习笔记(八)Python列表(二)
列表函数 追加和扩展 list.append() 在列表末尾追加新的对象 >>> dir(list) #dir 查看列表的函数 ['__add__', '__class__', '_ ...
- Python 学习笔记(八)Python列表(一)
列表基本操作 列表(list)定义 列表是Python中的一种对象类型,也是一种序列 对象类型:list 表示方法:[ ] python 列表中的元素可以是任何类型的对象 >>> ...
- python学习之第八篇——字典嵌套之字典中嵌套字典
cities = { 'shanghai':{'country':'china','population':10000,'fact':'good'}, 'lendon':{'country':'eng ...
- python学习【第八篇】python模块
模块与包 模块的概念 在python中一个.py文件就是一个模块. 使用模块可以提高代码的可维护性. 模块分为三种: python标准库 第三方模块 自定义模块 模块的导入方法 1.import语句 ...
- Python学习【第八篇】Set集合
Set集合 set集合是无序,不能重复,可嵌套的序列 如何创建 li = [] dic = {"k1":123} se = {"123","456&q ...
- Python之路(第八篇)Python内置函数、zip()、max()、min()
一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算,如果全部都是true,就返回true, 但是如果是空字符串.空列表也返回t ...
- python学习笔记(八)python操作Excel
一.python操作excel,python操作excel使用xlrd.xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的 ...
- Python 学习笔记(八)Python列表(三)
序列 序列:数学上,序列是被排成一列的对象(或事件):这样,每个元素不是在器他元素之前,就是在其他元素之后.这里元素之间的顺序非常重要.<维基百科> 序列是Python中最基本的数据结构. ...
- 《Python 学习手册4th》 第十六章 函数基础
''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容 (每天看42页内容,可以保证月底看完此书) “重点 ...
随机推荐
- 超详细的FreeRTOS移植全教程——基于srm32
### 准备 在移植之前,我们首先要获取到FreeRTOS的官方的源码包.这里我们提供两个下载链接: > 一个是官网:http://www.freertos.org/ > 另外一个是代码托 ...
- ubuntu14.04 安装tensorflow始末
基于ubuntu14.04 干净的系统一步步遇到的坑记录下来: 怀着平静学习的心情,问题总的能解决的! 1. 首先看了下当前python版本 python --version Python 2.7.6 ...
- NOIP2014联合权值
无向连通图G有n个点,n-1条边.点从1到n依次编号,编号为i的点的权值为Wi ,每条边的长度均为1.图上两点(u, v)的距离定义为u点到v点的最短距离.对于图G上的点对(u, v),若它们的距离 ...
- 【JZOJ4807】破解
Description 历经千辛万苦,ddddddpppppp 终于找到了IBN5100. dp 事先了解到SERN 共有T 个密码,每个密码是一个长度为N 的01 串,他要利用IBN5100 的特殊 ...
- .net core 3.0 WPF中使用FolderBrowserDialog
前言 随着.net core 3.0 的发布,WPF 也可以在 core 平台上使用了.当前的 WPF 不支持跨平台,仅能够在 Windows 平台上使用.如果想体验 WPF 跨平台开发,可以访问开源 ...
- 1002. 写出这个数 (20)-PAT乙级真题
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字.输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每一 ...
- JVM垃圾回收(上)
Java 中的垃圾回收,常常是由 JVM 帮我们做好的.虽然这节省了大家很多的学习的成本,提高了项目的执行效率,但是当项目变得越来越复杂,用户量越来越大时,还是需要我们懂得垃圾回收机制,这样也能进行更 ...
- 关于sqlmapapi一点记录
关于sqlmapapi自己练习的还是很少 今天看见freebuf上师傅的分享的内容 自己练习了一下 来自: https://www.freebuf.com/articles/web/204875.ht ...
- PHP stream_wrapper_register
<?php /** * 引用:http://php.net/manual/en/function.stream-wrapper-register.php * 把变量当成文件读写的协议 * * C ...
- Android Studio 模拟器Intel 加速
Starting emulator for AVD 'Phone1'emulator: ERROR: x86 emulation currently requires hardware acceler ...