'''
概念:
函数: 用于封装一些操作, 通过调取函数名,直接返回结果
定义关键字 ,函数名 函数体
'''
# def foo1():
# print("hello world!!!")
#
# foo1()
# # 函数嵌套
# def foo2():
# print("no 2")
# foo1()
# def foo1():
# print("no1")
# foo2()
# 带参数类
def my_add(a,b): # 形参
print("和为",a-b)
# my_add(3,9) # 在设定时,有几个形参 设定,调取时,就需要传递几个值
# 调用函数 使用的实参
# my_add(b=10,a=20)
# my_add(10,20)
# my_add(10,b=20)
# my_add(10,a=20) # 如果只是传递一个,且为第二个固定值,按照顺序固定值
# my_add(a=10,20) # 在使用实参进行指定值时,如果第一个指定,后续的所有都需要指定
# 创建函数, 通过输入一串字符,输出 这段字符 中最后一个单词的长度
# def foo_len(a):
# print(len(a.split()[-1]))
# foo_len("my name is hanmeimei") # 调用时,传入 值
# 定义函数, 输入3个整数 ,判断是否能组成一个三角形,如果特殊情况等边,等腰,直角 并进行打印出来
# def is_triangle(a,b,c):
# if a>0 and b>0 and c>0 and a+b>c and b+c>a and a+c>b:
# print("能构成三角形")
# if a == b != c or a == c != b or b == c != a :
# print("构成等腰三角形")
# elif a == b == c :
# print("等边三角形")
# elif a**2 + b**2 == c**2 or a**2 + c**2 == b**2 or c**2 + b**2 == a**2 :
# print("直角三角形")
# else:
# print("仅仅是普通版的")
# else:
# print("无法构成三角形")
# is_triangle(-3,5,5)
# 定义一个函数,传入一个字符串 判断 这个字符串是否是 回文联(abcba ; 1234321) 对称的
# def ishui(a):
# if a.strip() == a.strip()[::-1]:
# print("是回文联")
# else:
# print("不是回文")
# ishui(" 12343211")
# 定义一个函数,通过传入用户名 ,校验 用户名是否 合规, 要求: 只能是纯字母, 长度为 6-10位
# def checkname(a):
# if a.encode().isalpha() and len(a) in range(6,11):
# print("合格")
# else:
# print("不合格")
# checkname(" zhangsansan ")
#
# # 定义一个函数,统计2到指定数字的 素数 ,以列表形式输出
# # 素数 只能被1 和 本身 整除
# def su(a):
# list1 = []
# for i in range(2,a):
# # i 除以 2,i-1 的所有值,只要要余数为0 都不满足
# for j in range(2,i):
# if i % j == 0 :
# break
# else:
# list1.append(i)
# print(list1)
# su(50)
'''
局部变量: 作用于函数内(当前函数内)
全局变量:外层
外层的变量函数里层可以用,不能重名赋值,赋值后变成局部
'''
# num = 10 # 全局
# def foo1():
# num = 1
# print(num)
# foo1() # 值1
# print(num) # 值为10
# # 要通过函数内部 改 全局的值 global ; 先 global 在 赋值
# num = 10 # 全局
# num2 = 20
# def foo1():
# global num,num2
# num = 1
# num2 = 2
# print(num)
# foo1() # 值1
# print(num,num2) # 值为1 # 函数的num为全局变量 已经修改num值
'''
函数的缺省参数(默认参数)
在定义函数的时候,给传参定义一个默认值
调用时,可以少传入 一些 参数
'''
# def printnum(a,b=9):
# num = a + b
# print(num)
# printnum(1)
# def foo1(b,a=8,c=9): # 设置缺省参数时,只要一开始有默认值,后续都要传,如果不想设置,放前边
# num = a + b +c
# print(a,b,c)
# foo1(1,2) # 传入的实参 要 >= 没有 缺省 形参个数
def foo2(a,b=10,c=9):
print(a,b,c)