首页 > 代码库 > 四、python之函数详解

四、python之函数详解

一、函数

1.说白了就是把一组代码合到一起,可以实现某种功能,需要再用到这种功能的话,直接调用这个函数就行
2.函数、方法是一回事
3.定义一个函数的格式是:def+函数名+()
4.函数必须调用了之后才能执行

eg:

my_open
fw = open(‘a.txt‘,‘a+‘)
fw.seek(0)

all_users = {} # 用来存放所有的用户名和密码
def read_users(file_name):#括号里面是形式参数,其实就是一个变量
#函数体
print(file_name)
with open(file_name) as fr:
for line in fr:
up = line.strip().split(‘,‘) # 分隔账号密码
# print(‘分隔完之后的账号密码‘,up)
s_username = up[0] # 账号
s_pwd = up[1] # 密码
all_users[s_username] = s_pwd
print(‘调用函数之前:‘,all_users)
read_users(‘a.txt‘)#调用函数传进去的参数叫做实际参数,简称实参
#函数名加上括号就是调用,函数需调用之后才能执行
print(‘调用函数之后:‘,all_users)

 

简单写

def hello(name):
#必填参数,位置参数
print(‘hello %s‘%name)
hello(‘郑爽‘)

eg1:

def reg(name,age,sex=‘男‘):
age、name必填参数,位置参数
sex是默认值参数,不是必传
print(‘hi %s,age is %s,sex is %s‘%(name,age,sex))
reg(‘小迪‘,19,‘nan‘)

eg2
5.*args#可变参数

eg:

def post(*args):
可变参数,也叫参数组,也不是必填的,它接收到的是一个元组
它把调用函数时穿进去的每一个参数都放到一个元组里
print(args)
post(‘001‘,‘denglu‘,‘http://www.baiudd.com‘,‘post‘,‘a=1‘)
post(‘001‘,‘denglu‘)
post(‘001‘,‘denglu‘,‘post‘)
post(‘001‘)
post()
def other(name,age,country=‘china‘,*args):
print(name)
print(age)
print(country)
print(args)
other(‘wubing‘,‘999‘)

eg:

def other(name,age,country=‘china‘,*args):
print(name)
print(age)
print(country)
print(args)
other(‘‘)

6.**kwargs,关键字参数,接收的是一个字典,调用得用xx=11

传入字典调用的时候就得写**{‘age‘:18,‘name‘:‘xiaodi‘}
d = {‘age‘:18,‘name‘:‘xiaodi‘}
def kw(**kwargs):
print(kwargs)
kw()

eg:

def other2(name,country=‘china‘,*args,**kwargs):
#如果必填参数、默认值参数、可变参数和关键字参数你要一起用的话,必须参照必填参数、默认值参数、可变参数和关键字参数的顺序接受,否则就报错
print(name)
print(country)
print(args)
print(kwargs)
other2(‘wubing‘)
other2(‘xiaodi‘,‘beijing‘,‘python‘,‘yin‘,user = ‘ywq‘)

7.关键字参数调用

eg:

def write(filename,model,ending,user,os,money,other):
print(filename)
print(model)
print(ending)
print(user)
print(os)
print(money)
print(other)
write(os=‘windows‘,user=‘wubing‘,model=‘w‘,filename=‘a.txt‘,ending=‘utf-8‘,money=222,other=‘hahah‘)

8.函数的返回值

 

def plus(a,b):
return函数
1.调用碰到return,立即结束这个函数
2.调用完函数之后,返回计算的结果
3.函数可以没有返回值,如果没有返回值的话,默认返回none
4.如果这个函数的处理结果需要在别的地方用到,那就需要给函数返回值
5.如果函数return多个值得话,那么他会把多个值放到一个元祖里面去
c = a+b
return c

print(c)

plus(1,2)

eg:

score1 = 50
score2 = 90
def echo(sum):
print(‘总分是%s‘%sum)
res = plus(score1,score2)
print(res)
echo(res)
lis = [5,2,6,44,77]
print(lis.sort)

9.小程序
#1、判断小数
# 1.92
# -1.988

def is_float(s):
‘‘‘
这个函数是用来判断传入的是否为小数,包括正小数和负小数
:param s: 传入一个字符串
:return: True or False
‘‘‘
s = str(s)
if s.count(‘.‘)==1:#判断小数点个数
sl = s.split(‘.‘)#按照小数点进行分割
left = sl[0]#小数点前面的
right = sl[1]#小数点后面的
if left.startswith(‘-‘) and left.count(‘-‘)==1 and right.isdigit():
lleft = left.split(‘-‘)[1]#按照-分割,然后取负号后面的数字
if lleft.isdigit():
return True
else:
return False
elif left.isdigit() and right.isdigit():
#判断是否为正小数
return True
else:
return False
10.全局变量和局部变量
# score3 = [1,2,3,4,5]
# score3 = {"id":1}
score3 = 100
def my_open():
#在函数里面定义变量叫局部变量,它只能在函数里面用
#出了该函数外,就不能使用了
#在函数外面定义的变量,是全局变量,在函数内也可以使用
#如果想在函数里面修改全局变量的值,那么要先用global关键字声明
#要修改全局变量是int、string的话,必须得写global
#如果是字典和list的话,要修改的话,不能加global
fw = open(‘a.txt‘,‘a+‘)
fw.seek(0)
print(‘score3‘,score3)
d={‘id‘:2}
d[‘price‘]=99

def hh():
print(‘修改商品...‘)
def cc():
print(‘添加商品...‘)
def query():
print(‘查询商品。。。‘)
menu= {
‘1‘:hh,
‘2‘:cc,
‘3‘:query
}
chioce = input(‘输入编号‘)
menu[chioce]()
 

 

四、python之函数详解