python ---------函数
一、为什么要使用函数?
因为如果没有函数我们平时的代码就会有很多重复
避免代码重用
提升代码的可读性
二、函数的定义与调用:
1. def 函数名(参数1,参数2)
''' 函数注释'''
print('函数体')
return 返回值
函数就是封装一个功能
定义:
def 关键字开头,空格之后接函数名和圆括号,最后加一个冒号
def是固定的不能改变
函数名的定义和变量一样 :数字字母下划线 任意组合 ,不能是数字开头 不能是关键字 要具有可描述性
函数的调用
返回值=函数名(参数1,参数2)#记得函数名后面加括号
下面我们先来定义一个求计算字符串长度的函数。假如我们的len()函数现在不能用了,那么我们就需要定义一个函数,求字符串的长度。如果让我们一次一次的去写相同的代码,会显得很麻烦。这时候我们的函数就上场了。
def length():s= 'hello world'length = 0for i in s :length +=1print(length) print(length()) #因为没有返回值你打印最后会显示一个null def length():s= 'bjbbabjsaofsa'num = 0for i in s:num +=1return num m = length() print(m) # print(length())#return的时候你可以定义一个变量来接收 也可以不接收直接打印 但是如果print就不可以 但是一般最好不要在函数中写print太lowle
View Code
函数的返回值:
定义函数一般不要在函数中写print
return
1、在函数中遇到return就结束函数
2、将值返还给函数的调用者
无return
return None
return一个值该值是什么就返还什么
大家看一下对与函数中只能存在一个return 因为第一个碰到return就把函数结束了
>>> def func(a, b ,c):return areturn b>>> print(func(3, 7, 8)) 3 #只返回第一个return的3 因为碰到第一个return就把函数结束了 其他的return 存在的没有意义了 >>>
函数的传递参数:
两个方面:
实参角度:
1形式参数和实际参数
def my_len(a): #这个a就是形式参数 用来接收实际参数的return l print(my_len(3)) #实际参数 实实在在存在的
View Code
2位置传参 一 一对应
def func(a, b ,c):return a, b, c print(func(2, 3,700)) #一一对应并且是当作一个元组打印出来
3、混合传参----->关键字永远在最后面
def func(a, b=30 ,c): #形式参数和实际参数的一样都是直接赋值的要放在最后不然会报错,这个你看b直接赋值了但是放在了中间就报错return a, b, c, print(func(2, 3,b=700))
def func(a, c ,b=40):return a, b, c #这个就是对的 就是全部都放在后面 print(func(2, 3,b=700))
如果你return的好几个值都在一起return那么最后的返回值显示出来就在一个元组内
3,函数名可以作为函数的参数。
def func():
pass
def func1(a):
a()
func1(func)
4,函数名可以作为函数的返回值。
def func1(a):
return a
func1(func)()
默认传参:
def Info(username,sex='男'): #定义一个默认参数 sexwith open('one',encoding= 'UTF-8',mode = 'a')as f : #a就是追加内容f.write('{}\t{}\n'.format(username,sex)) while True :username= input('输入您的姓名:(男生为1开头)').strip()if '1' in username :username =username[1:]Info(username)else :Info(username,sex='女')
View Code
函数的动态参数:
因为我们的静态参数只能接收固定的 不能接收哪些不确定的或者多余的变量
动态参数,也叫不定长传参,就是你需要传给函数的参数很多,不定个数,那这种情况下,你就用*args,**kwargs接收,args是元祖形式,接收除去键值对以外的所有参数,kwargs接收的只是键值对的参数,并保存在字典中。
按位置传值多余的参数都由args统一接收,保存成一个元组的形式
按照关键字传值接收多个关键字参数由kwargs接收 保存成一个字典的形式
# def Func(a,*args,b='男'): # print(a) # print(b) # print(*args) # Func(3,2,3,4,b='你')# def n (a,b,c,**kwargs): # print(kwargs) # # n(1,2,3,d=5,f=6) # def func(*args): # print(args) #(1,2,30,1,2,33.。。。。。) # l1 = [1,2,30] # l2= [1,2,33,21,45,66] # func() # def Func(*args): # print(args) # # # li={'name':1,'age':5} # l1 = [1,2,30] # l2= [1,2,33,21,45,66] # Func(*li) # def Nu(a,b,*args,sex='麻痹'): # print(args) # print(sex) # Nu(3,6,'pfapifuafjfbsa',sex='弄哈') # def N(): # print(a,*args,**kwargs) # print(args) # # print(kwargs) # print(kwargs) # # # N(1,'2345',b=12) #*agrs 动态参数 万能参数#args 动态参数 接收的就是实参对应的 所有位置参数 并将其放在元组中 #位置参数 *args 默认参数 # def func (a,b,c,*args,e='男'): # print(a) # print(b) # print(c) # print(args) # print(e) # func(1,2,3,4,5,6,e='女') #**kwargs # def func(a, b,c, d, *args, e='男',**kwargs): # print(a) # print(b) # print(c) # print(d) # print(args) # print(kwargs) # func(1,2,3,4,5,m=9)# 最终顺序:位置参数,*args 默认参数 **kwargs # def func(a,b,c,e='laowang',*args): # print(a) # print(b) # print(c) # print(e) # print(args) # func(1,2,3,4,7,8,89) #如果默认参数放在args之前那么传值就会把args给传递给默认参数一个 把它给覆盖了 所以一般不这样做# *的魔法运用 # def func(*args): # print(args) # # # l =[1,2,3] # # l2=[1,2,3,4,5,6] # l=(1,2,3,4) # l2=(2,3,4,5) # func(*l,*l2) #*号可以把两个列表元组给传递进函数内 然后转化位一个元组中 因为*args接收完 那么用args输出后就会把所有的元素都放在元组中# def func(*args): # print(args) # # l = [1,23,4,56,78] # l1=[1,2,3,4] # a={'name':'alex','age':12} # func(*a) #如果是字典运用*号然后再把字典让args接收的话就会把字典中的key值给放在元组中打印出来 # func(*l,*l1) # *星号可以放列表 字符串 元组 字典(字典只是显示key值),int类型是不可以放进去的 # def func(**kwargs): # print(kwargs) # dic ={'name1':'alex','age1':47} # dic1={'name':'old_man','age':56} # func(**dic,**dic1)#单个的*可以接收不同的列表、元组、字符串内的相同的元素 因为它可以把相同的元素 变成同一个,而**两个星号不可以接收两个人不同的字典内的相同的key就是用**组合两个字典 这两个字典内不可以出现相同的key#在函数的定义时, *rags、**kwargs# 代表的是聚合 # def func(*args,**kwargs): # print(args) # print(kwargs) # dic1 = {'name1':'alex','age1':46} # dic2 = {'name':'老男孩','age':56} # func(*[1,2,3,4],*'jkbabl',**dic1,**dic2) *和 **可以同时使用的 ## def func(*args,**kwargs): # print(args) # print(kwargs) # # dic1 = {'name1':'alex','age1':46} # dic2 = {'name':'老男孩','age':56} # func(*[1,2,3,4],*'bjbfbabfa',**dic1,**dic2) #字符串如果打散放入args中就会以单独的字符串类型的形式放入进去
View Code
*args必须放在默认参数之前放在位置参数之后 ,**kwargs必须放在最后 也就和静态参数一样 默认参数都在最后 而**kwargs接收的是赋值的默认参数 所以必须放在最后
转载于:https://www.cnblogs.com/zhaoyunlong/p/8665112.html
python ---------函数相关推荐
- Pass算子python 函数
Pass算子python 函数 函数 • 函数是代码的一种组织形式 • 函数应该能完成一项特定的工作,而且一般一个函数只完成一项工作 • 有些语言,分函数和过程两个概念,通俗解释是,有返回结果的是函数 ...
- Python 函数的可变参数(*paramter与**paramter)的使用
Python 函数的可变参数主要有 *paramter与**paramter 可变参数主要有 *paramter的作用 接受任意多个实际参数并放到一个元组中 def people(*people):f ...
- 【python教程入门学习】Python函数定义及传参方式详解(4种)
这篇文章主要介绍了Python函数定义及传参方式详解(4种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 一.函数初识 1.定 ...
- python系统提供构造函数传入参数_[ Python入门教程 ] Python函数定义和使用
函数是一段可以重复多次调用的代码,通过输入的参数值,返回需要的结果.通过使用函数,可以提高代码的重复利用率.本文主要介绍Python函数的定义.调用和函数参数设置方法. 函数的定义 Python函数定 ...
- python函数第二次运行报错_Python学习笔记2-函数、高级特性
函数 调用函数 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数 >>> abs(100) 100 >>> abs(-20) 20 ...
- [教程]Python函数的参数
Python函数的参数 位置参数.默认值参数.可变参数.关键字参数和命名关键字参数 1 函数结构 def 函数名(参数):函数体返回值 2 位置参数 略 3 默认值参数 略 4 可变参数 # 可变长度 ...
- python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce、map、filter)
python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce.map.filter) Python 中函数的应用非常广泛,比如 input() .print().range( ...
- python函数参数*arg和**kwargs分别代表什么?
python函数参数*arg和**kwargs分别代表什么? 注意: 注意:参数arg.*args.**kwargs三个参数的位置必须是一定的.必须是(arg,*args,**kwargs)这个顺序, ...
- python 函数 默认参数
python 函数 默认参数 def add(a=1, b=2): # a,b设置默认参数c = a + breturn c c = add(a=2) # 如果不填,就是默认参数 print(c) 4
- Python的零基础超详细讲解(第十二天)-Python函数及使用
基础篇往期文章: Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博 ...
最新文章
- 干货!解读2016-2017全球人工智能技术及产业发展的现状及趋势~
- Devexpress 之gridControl
- Google Android开发精华教程
- v4l2 框架下如何设置分辨率_如何在端外投放的场景下实现前端实时CEP框架?
- 第四范式携手宁德时代 共建智能制造AI新基础设施
- BindingException: Parameter 'XXX' not found. Available parameters are [collection, list]
- Leetcode589.N-ary Tree Preorder TraversalN叉树的前序遍历
- http安全 Java_HTTP通信安全-身份验证 | 字痕随行
- 2013年6月份安徽省计算机等级考试二级c语言答案,2013年计算机二级C语言上机试题九及答案...
- activemq spring监听不了
- 社交礼仪与口才艺术 艾跃进
- 解决print spooler打印服务自动停止的过程记录
- iOS 手势解锁密码
- aspnetpager使用介绍
- Ubuntu20.04 在anaconda上,opencv-python支持h264编码
- html p标签嵌套a,HTML标签嵌套规则详细归纳适合新手朋友
- 触摸屏键盘插件Virtual Keyboard 该怎么用 Virtual Keyboard 入门指南
- IOS UILabel 多行文字自动换行
- 广州日报新媒体发展战略解析(转)
- Android任务栈的理解