python---函数
#函数 方法 定义函数 简化代码,(函数有值,没被调用不会生效)
def say_hello(): #函数名,定义函数
print("hello") #函数体
say_hello() #调用函数:函数名加括号
def crea_band_card(cound): #形参 形式参数,可以传多个参数,没限制,注意位置
for i in range(cound):
print(i)
crea_band_card(5) #实参 实际参数
number=5
code="icde"
crea_band_card(number)
crea_band_card(number,"ccb")
必传参数,位置参数
def crea_band_card(cound=“werew”): 默认值参数,必须跟在位置参数的后面,也可以写多个
#函数传参数,可以指定传参数,可以组合,位置传参,关键字传参
def say_hello(name,age,sex,addr,phone):
def say_hello("xiaohei",addr="beijing",phone=110,sex="男"):可以指定传参
#
def fun1(name:str):#:加类型,指定类型传参,不传也行 , 也可以冒号list 有默认值list=[0]
print(name.) 点什么就可以选了
#
# def fun2()->str:#返回值是什么类型指定
# return"abc"
#
def fun3(*, a, b, c): #如果星号是一个单独的参数,后边需要按照关键字传参
print(a)
print(b)
print(c)
fun3(a=1,b=2,c=3) 必须这样传才可以
def fun3(a, *, b, c): #星号后面按照关键字传参,a随便
#参数组(可变参数)
def send_ams(*args): #只能位置传参,不限制参数,放一个元祖里面
print(args)
1.试一下是否必传
2.传一个参数
3.传多个参数
send_ams() #参数正常传
send_ams(11111)
send_ams(111,222,222)
#关键字参数
def send_ams(**phone): #只能关键字传,放到字典里
print(phone)
send_ams()
send_ams(11111)
send_ams(111,222,222)
位置参数 (必传)
默认值参数
可变参数
关键字参数
多个参数必须要按照以上顺序传
函数对照参考
函数
5.1函数定义
1.定义:def
2.调用:只有调用后 函数才会执行
例:
def hello():
print("hello111")
hello()# 调用
3.return:返回值,函数遇到return便会立即结束
(1)函数没有return 返回none
def hello():
print("hello111")
print(hello())# none
(2)return一个 :有一个返回值
def welcome(name,country="中国"):
return name
print(welcome("小黑")) # 小黑
(3)return多个:返回一个元组
def welcome(name,country="中国"):
return name,country
print(welcome("小黑")) #结果:('小黑', '中国')
5.2函数参数
1.必填参数(位置参数)
2.默认值参数
见下例:name:必填参数 country为默认值参数 已经给出默认值 如果调用是不传country值就默认为china
def test(name,country="China"):
print(name)
print(country)
调用:
(1)
a="小黑"
b="japan"
test(a,b)
(2)
test(country=b,name=a)
(3)
test("小黑",country="Japan")
错误写法:
test(country="japan","小河哦") # 错误的写法
3.可选参数:不是必填参数,一般定义为*args 接收到的为一个元组
例:
def send_sms(*args):# 接收到是一个元组
print(args)
(1)不传参数:
send_sms() # 结果:()
(2)传一个参数
send_sms(132) # 结果:(132,)
(3)传多个参数
send_sms(123,122,222) # 结果:(123, 122, 222)
4.关键字参数:两个** 返回字典 传参是需要xx=xx;不限制参数个数
def send_sms(**args):#
print(args)
(1)不传参数
send_sms() # 结果:{}
(2)一个或多个参数
send_sms(a=1,b=2,name="abc") # 结果:{'a': 1, 'b': 2, 'name': 'abc'}
5.3变量
1.全局变量,:在函数外部定义,整个python文件都可以使用
2.局部变量:在函数内部定义,作用域为函数内部,如果函数和内部找不到会向上找
尽量少使用全局变量,会一直占用内存
a=100 # 全局变量
def test():
a=1 # 局部变量
print(a)
test() #1
print(a) #100
3.变量声明:global
a=100 # 全局变量
def test():
# 使用global 声明
global a
a=1 # 局部变量
print(a)
test() #1
print(a) #1
4.函数读取练习:函数从调用处读取,没调用不会运行
练习一:c的值:报错 原因为test1()没有调用不会运行
def test():
global a
a=5
def test1():
c=a+5
return c
test()
练习二:运行结果:0 原因:函数遇到return停止 所以为0
def test():
for i in range(50):
if i % 2==0:
return i
print(test())
5.4递归
递归 就是自己调用自己
例: 偶数返回 奇数继续输入
def test():
num=input("请输入一个数字").strip()
if num:
num=int(num)
if num%2==0:
return num
test() # 自己调用自己 递归
print(test())
5.5函数练习
1、是否为浮点数判断
def is_float(s):
# 将输入转化为字符串 方便分割
s=str(s)
# 判断是否只有一个小数点
if s.count(".")==1:
#按照小输掉分割
left,right=s.split(".")
# 正数
if left.isdigit() and right.isdigit():
return True
# 负数
elif left.startswith("-") and left.count("-")==1 and right.isdigit() and left[1:].isdigit():
return True
return False
print(is_float("-12.11"))
2、实现replace功能
def replace(src,old,new):
if old in src:
# 使用旧的字符串分割 就去掉了旧字符串
src=src.split(old)
# 使用新字符串链接 就加入了新字符串
return new.join(src)
a="123qwdcqsd123ert123wed"
b="000"
res=replace(a,"123",b)
print(res)

浙公网安备 33010602011771号