首先讲函数、

1.内置函数
python自带的一些函数,直接拿过来能用的
id() #看内存地址
type() #看数据类型
print() #打印
input() #输入
list() #转list
set()# 转集合
str()#转字符串
dict()#转字典
int()#转int
float()#转float类型
len()#取长度
max()
min()
dir() #帮助你的
sorted()#排序
round(11.00011,2)#保留几位小数
2.自己定义的函数:
def say(): #函数名
    print('hello')#函数体

注意:函数不调用是不会被执行的

say()#调用就可以了

关于函数的参数:必填参数和默认值参数,默认值参数可以不填

 1 def calc(a,b):  #形参, 形式参数
 2     #位置参数,必填参数
 3     res = a * b
 4     print('%s * %s = %s'%(a,b,res))
 5 
 6 # calc(7,8)  #实参,实际参数
 7 def op_file(file_name,conent=None):
 8     #默认值参数,它是非必填的
 9     f = open(file_name,'a+',encoding='utf-8')
10     f.seek(0)
11     if conent:#不为空代表写
12         f.write(conent)
13         f.flush()
14     else:
15         all_users = f.read()
16         return all_users  #调用完函数之后,返回什么结果
17     f.close()
18 # res = op_file('a.txt')
19 # print(res)
20 def haha():
21     #函数里面遇到return函数就立即结束了
22     for i in range(5):
23         print(i)
24         if i==3:
25             return  #只写一个return的话,就返回None
26 # res = haha()
27 # print(res)
参数讲解
 1 def is_float(s):
 2     s = str(s)
 3     if s.count('.')==1:#小数点个数
 4         s_list = s.split('.')
 5         left = s_list[0]  #小数点左边
 6         right = s_list[1] #小数点右边
 7         if left.isdigit() and right.isdigit():  #正小数
 8             return True
 9         elif left.startswith('-') and left.count('-')==1 and \
10                 left.split('-')[1].isdigit() and \
11                 right.isdigit():  #判断合法负小数
12                 return True
13     return False
例子:判断是否是合法小数的函数

关于函数的不固定参数:参数组和关键字参数

def syz(a,*args):  #参数组 *arg为非必填参数,不限制参数个数
    print(a)
    username = args[0]
    pwd = args[1]
    age = args[2]

# syz('niuhanyang','2423',2323)
# syz('1s','sdf')
def syz2(time,**kwargs):  #关键字参数,为非必填参数,不限制参数个数
    print(kwargs)

syz2('sdf')  #{}
syz2(name='nhy',age=38,time='20180912')
syz2('2018',name='nhy',age=38,addr='回龙观',home='河南')
syz2(time='xx',xx='xxx')
不固定参数

关于递归,也就是函数自己调用自己

def test1():
    num = int(input('please enter a number:'))
    if num%2==0:#判断输入的数字是不是偶数
       return True #如果是偶数的话,程序就退出了,返回true
    print('不是偶数请重新输入!')
    return test1()#如果不是偶数的话继续调用自己,输入值
# print(test1())#调用test

#少用递归,递归最多递归999,递归的效率不高。
递归举例

第二点 变量,常量

变量分局部变量和全局变量,

局部变量:只在函数内有效,出了函数无效

全局变量:一旦被修改,会影响整个代码,所以不安全,如果要修改全局变量,需要先声明下你要修改的是全局变量

常量就是一个不变的值

name = '谢红'
#全局变量
#如果要改全局变量的话,那你要先声明一下,你修改值是全局变量
def sayName():
    global name
    name = '刘伟'
    print('name1',name)

模块:

random 模块 json 模块 引入后使用

import random,json,string

random,string

1 import random,string
2 # print(string.printable) #代表 数字+字母+特殊字符
3 # print(random.randint(1,10)) #随机取整数
4 # print(round(random.uniform(1,99),2))#随机小数
5 # print(random.choice([1,2,3,4])) #只能随机取1个元素
6 # print(random.sample(string.printable,5)) #随机取N个元素,返回的是list
1 pickts = ['A','J','Q','K',2,3,4,5,6]
2 random.shuffle(pickts) #只能传list
3 print(pickts)
举例:洗牌

json模块

引入json模块

import json
import json
#json串是一个字符串
f = open('product.json',encoding='utf-8')
# res = f.read()
# product_dic = json.loads(res)  #把json串,变成python的数据类型
# print(json.load(f)) #传一个文件对象,它会帮你读文件
d =  {
    'zll':{
        'addr':'北京',
        'age':28
    },
    'ljj':{
        'addr':'北京',
        'age':38
    }
}
fw = open('user_info.json','w',encoding='utf-8')
# dic_json = json.dumps(d,ensure_ascii=False,indent=4)  #字典转成json,字典转成字符串
# fw.write(dic_json)
json.dump(d,fw,ensure_ascii=False,indent=10)  #操作文件

关于修改文件

方法一、

1、打开一个文件,获取到他的所有内容
2、对内容进行修改
3、清空原来文件的内容
4、把新的内容写进去
f = open('username','a+')
f.seek(0)
all_str = ''
for s in f:
    new_s ='syz_'+s
    all_str=all_str+new_s
f.seek(0)
f.truncate() #清空文件内容
f.write(all_str)
f.close()

方法二、

1.打开2个文件
2.a文件
3.写一行写到b文件
4.a.txt a.txt.bak
5.删掉a文件,b文件名字改成a文件名 引入OS
import os
with open('words',encoding='utf-8') as fr,open('.words.bak','w',encoding='utf-8') as fw:
    for line in fr:
        new_line = line.replace('','flower')
        fw.write(new_line)
os.remove('words') #删除文件
os.rename('.words.bak','words') #改名