终于说到python的函数了,很重要的一个东西,而且涉及到各种参数,详细记录一下。
一、函数的定义
#函数或是方法,功能
#1、提高代码的复用性
#2、让代码更简洁,简化代码
#一、函数定义
#使用def
def sayHello(): #函数名
print('Hello') #函数体
#函数不调用是不会被执行的
#函数调用
sayHello() #调用函数
二、函数的参数
1、位置参数
def calc(a, b): #形参,形式参数
#位置参数,必填参数,调用时一定要写
res = a * b
print('%s * %s = %s'% (a, b, res))
calc(7,8) #实参,实际参数
函数使用示例:
#操作文件的函数
# 通过默认值参数进行判断是读还是写
def op_file(file_name, content=None): #默认值参数
#默认值参数,它是非必填的
f = open(file_name, 'a+', encoding='utf-8')
f.seek(0)
all_users = ''
if content: #不为空,代表写
#写文件
f.write(content)
f.flush()
else:
#为空,代表读文件
#print(f.read())
all_users = f.read()
f.close()
return all_users #调用完函数之后,返回什么结果
op_file('a.txt', 'xxxx,123456')
res = op_file('a.txt')
print(res)
三、变量
1、局部变量
#函数里面定义的变量,都是局部变量,只能在函数里面用,
# 出了函数之后就不能用了
#return
#1、把函数处理的结果返回回来
#2、结束函数,函数里面遇到return,函数会立即返回
def haha():
#函数里遇到return就立即结束了
for i in range(5):
print(i)
if i == 3:
return #只写一个return的话,就返回None
res = haha()
print(res)
2、函数的示例程序
(1)校验密码
import string
def check(pwd):
#长度6-11
#字母和数字吧
if len(pwd) >5 and len(pwd) <12:
if set(pwd)&set(string.ascii_letters) and set(pwd) & set(string.digits):
print('密码合法.')
else:
print('密码不合法.')
else:
print('密码不合法.')
res = check('adbs1234') #函数里面如果没有return的话,默认返回的是None
print(res)
#示例
lst = [1,2,3,4,5,6]
print(lst.sort()) #sort没有返回值而已,是直接对lst操作的
(2)#判断是否是小数
# 需求分析:
#1、 小数点个数 .count()
# 2、按照小数点进行分割 1.98 [1,98] s.87 98.s1
#3、正小数:小数点左边是整数 右边也是整数 .isdigits()
# 负小数:小数点左边是以负号开头,但是只有一个负号,右边也是整数 -9.85
def is_float(s):
s = str(s)
if s.count('.') == 1: #小数点个数为1
s_lst = s.split('.')
left = s_lst[0] #小数点左边
right = s_lst[1] #小数点右边
if left.isdigit() and right.isdigit(): #正小数时
return True
elif left.startswith('-') and left.count('-') == 1 and
left.split('-')[1].isdigit() and
right.isdigit(): #判断合法负小数
return True
return False
print(is_float(1.98))
print(is_float(-2.97))
# print(is_float(-1))
# print(is_float(129))
# print(is_float('s.87'))
# print(is_float('1.8s7'))
# print(is_float('--98.123'))
# print(is_float('--98.1-23'))
print(is_float(1.0))
print(is_float(0.0))
2、常量
#一个不变的值
PORT = 3306 #常量,一般以大写来标识
FILENAME = 'user.txt'
money = 500
def test(consume): # 500
return money - consume
def test1(money):
return test(money) + money
money = test1(money)
print(money)
#money=500
3、全局变量
#公共的变量,都可以用的变量
#1、不安全,因为所有有都可以改
#2、全局变量它会一直占着内存
name = '小白' #name为全局变量
#如果要改全局变量的话,那你要先声明一下,你要修改的值是全局变量
def sayName():
global name
name = '小黑'
print('name1:', name)
def setName():
global name
name = '摸手哥'
def lw():
age = 23
return age
sayName()
setName()
print('name2: ', name)
def test():
global a
a = 5
def test1():
c = a + 5
return c
test() #调用test(),把全局变量a定义了,下面就不会报错了
res = test1()
print(res)
def op_mysql(host, port, username, password, db, charset,sql):
print('连接数据库')
#传参方式2
op_mysql(sql='select * from user;',
host='192.168.1.11',
username='abc',
password='123456',
db='test',
charset='utf-8',
port='xxxx')
#或者这样传参3,可以混合使用
op_mysql('192.168.1.11',
db='',
username='',
password='',
charset='',
port='')