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)


 
posted @ 2021-10-15 14:14  王王的王  阅读(81)  评论(0)    收藏  举报