python入门基础:函数

函数

定义:完成待定功能一段代码

def 函数名([参数1],[参数2]....[参数n]):
 函数体
res = area(10)
print(res)
print(area(10))

函数命名名
不能和系统函数重名,否则系统函数无法使用
函数定义分两部分函数头和函数体
函数体,就是实现功能的代码段,以:开头,必须缩进
函数名的命名风格:一般建议用下划线分隔的小写单词组成:say_hello
函数的优点:
代码可复用
代码可维护性高
容易排错
可读性好
利于团队开发

注意
冒号不能省略
函数体必须缩进
函数名不要和系统函数重名

def add(a, b):
    res = a + b
    return res

print(add(3,4))

函数参数

1 实参和形参

形参:就是函数定义时小括号里的变量
实参:函数调用的时候,小括号里的表达式
函数可以没有形参和实参

2 参数分类

位置参数:要求实参顺序必须和形参顺序完全一致,由形参顺序决定实参顺序

def say_hello(name,age,home):
 print('大家好,我是{},我今年{}岁了,我来自
{}'.format(name,age,home))
say_hello('王二妮',18,'湖北武汉') 

关键字参数:函数调用时,实参可以是键值对,键就是形参名字,这样的调
用,实参不必关心形参的顺序

def say_hello(name,age,home):
 print('大家好,我是{},我今年{}岁了,我来自
{}'.format(name,age,home))
say_hello(name='王傻',home='大连',age=20) #三个关键字参数
say_hello('大傻',home='美国',age=30) #两个关键字参数
sya_hello('二傻',24,home='何方') #一个关键字参数

默认值:如果形参在定义的时候给定一个值,那么函数在调用时就可以不传实
参,可以简化调用
默认值参数必须放到最右边
如果传了实参,那么实参优先,不会使用默认值
默认值只计算一次
默认值必须是不可变对象

 my_power(x,n=2):
 return (x) ** n
my_power(3)
my_power(4,0.5)
def test(a=[]):
 a.append('end')
 print(a)
test([1,2,3])
test() #['end']
test() #['end','end']

可变参数:传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0
个。

#使用*接收任意数量的位置参数
 #注意:*的不定长参数被当做元组处理
def demo(a,b,*args):
 print(a,b,args)
demo(12,33,90)
demo(1,2,3,4,5)
a=(1,2,3)
demo(*a)
#使用**接收任意数量的关键字参数
#注意:**的不定长参数被当做字典处理
def demo1(a,**args):
 print(a,args)
demo1(1,name='kk',age=3)
b = {'a':20,'b':12,'c':32}
demo(**b)

参数组合

形参顺序须按照以下顺序:位置参数、默认值参数、*args,**kwargs

命令行参数(了解)

如果要获取命令行下传给python文件的参数可以使用体统模块sys的argv来获取
参数个数:len(sys.argv)
文件名:sys.argv[0]
参数:sys.argv[1],sys.argv[2]…

# 文件名: 1.py
import sys
print(len(sys.argv))
print(sys.argv[0])
print(sys.argv[1])

函数调用

函数调用必须在函数定义之后
函数调用必须能够正确传递实参

def demo(a,b,c=0,*arg1,**arg2):
 print(a,b,c,arg1,arg2)
demo(1,3,k=4)
demo(1,2,3,4,5)
demo(1,b=3,c=3,d=5)
demo(*(1,2,3),**{'name':12}) #任何函数都可通过这种形式传递参数

返回值

return 表达式
return 会结束调用,return下面不要写代码
return 不是必须的
如果函数没有返回值,默认返回None

def demo2():
 return 1
def demo3():
 return 1,2,3
print(demo2())
print(demo3()) #(1,2,3)

返回多个数据

def demo():
    return 1,2,3

print(demo())

文档字符串

函数文档字符串documentation string (docstring)是在函数开头,用来解释其
接口的字符串。简而言之:帮助文档
包含函数的基础信息
包含函数的功能简介
包含每个形参的类型,使用等信息

文档字符串书写规则:
必须在函数的首行
使用三引号注解的多行字符串(’’’ ‘’’) 或(""" “”")
函数文档的第一行一般概述函数的主要功能,第二行空,第三行详细描述。

def test():
 """
 函数名:test
 功能:测试
 参数:无
 返回值:无
 """
 print("函数输出成功") 
 #使用__doc__属性查看文档字符串
print(test.__doc__)

参数传递(**)

python的参数传递是简单的值传递,当然这里的值是指变量的引用(地址),不
是变量的值。不存在值传递和引用传递的区分。简而言之,python的参数传递可
以称之为对象引用传递,对象可以分为:
不可变对象:int、float、None、complex、bool、tuple、str,range
在函数内部不可能修改函数外部的变量
可变对象: dict、list
可以在函数内部修改

x = 10
y = 5

def swap(a, b):
    # a,b是局部变量
    a,b = b,a
print("交换前:{}--{}".format(x,y))
swap(x,y)
print("交换后:{}---{}".format(x,y))

空函数

借助于pass语句实现,函数体不完成任何功能,只有一个pass语句

def test():
 pass # 占位符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值