-
2020-12-22 14:05:34
Q1:python函数里的数组如何在函数外调用出来
使用返回值的方法有两种:
可以直接把调用的函数作为变量使用
可以用调用函数给一个变量赋值
第一种情况见如下例子:
l = [1,2,3,4,5]
def add_element(list, element):
list.append(element)
return list
printadd_element(l, 6)
# >>>[1,2,3,4,5,6]
printadd_element(l, 6)[5]
# >>> 6
第二种情况:
l1 =add_element(l, 6)
print l1
# >>>[1,2,3,4,5,6]
print l1[5]
# >>> 6
注意: 以上例子都是应用于python 2.x
Q2:Python自定义函数如何调用?
Python自定义函数如何调用这个问题,我的看法是需要明白什么是函数,什么是参数这两个问题。什么是函数,函数是组织好的,可以复用的用于解决同一类问题的代码段
函数是我们根据需要、对事物的了解,组织成某一个代码段,供其它类似的场景中调用。函数提高了应用的模块性、代码的重复复用-复用性。python中有许多内建的函数,比如:str(),print()等是函数,我们也可以自己定义创建函数,被称作自定义函数。python中通过def这个关键字来声名定义一个函数。什么是函数的参数,函数的参数给函数提供了更高的灵活性
函数的参数是我们事先定义的一个变量,变量的好处在于值是不固定的,可以在调用函数的时候根据需要使用特定的值。除了正常定义的必选参数外,还可以使用默认参数,可变参数和关键字参数。函数调用示例
无参数函数调用,直接调用就可以得到结果,不需要输入其它值
有参数的函数调用,需要根据需要输入相应的参数,得到相应的结果函数的调用,就是需要我们事先想清楚相应的逻辑,然后组织一段代码,供后续的业务调用使用,在调用的时候只需要使用对应的函数名称和参数就可以使用(在有参的情况下,输入相应的参数值)。
Q3:python中怎么在一个函数内调用另外一个函数,类
123456789101112defa(x):y=x*xreturnydefb(x):y=a(x)returnyy1=a(2)y2=b(3)#这样就可以了试一下
Q4:python中如何定义函数
用def关键字,括号里是参数列表
def add(a, b):
return a+b
#下面调用
print add(1, 2)
Q5:python 在一个类中函数调用可以在函数定义之前吗
两种位置都试一下呗,编程需要有探索的劲儿,不然文档手册都看不下去的话,很难提高
Q6:Python函数定义和调用时都加*,有什么作用?
函数定义时,*和**都代表的可变参数,*代表的是元组或列表,**代表的是字典,至于函数调用时,*代表将这个元组或列表的元素拆开,依次传递给函数的每个参数,这些具体的例子你可以在网上查一下,相关书籍也有具体介绍的,在实际编程中也会经常遇到,可以解决许多意想不到的问题。
Q7:Python如何调用自定义类中的函数?
定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。
如下实例调用了printme()函数:
复制代码 代码如下:#!/usr/bin/python
# Function definition is here
def printme( str ):
"打印任何传入的字符串"
print str;
return;
# Now you can call printme function
printme("我要调用用户自定义函数!");
printme("再次调用同一函数");
#以上实例输出结果:
#我要调用用户自定义函数!
#再次调用同一函数
更多相关内容 -
python 类中静态变量_Python中的类或静态变量
2020-07-26 08:49:37python 类中静态变量 Python类/静态变量 (Python Class / Static Variables) Class or Static variables are class-related variables that are shared among all objects but the instance or non-static variable ...python 类中静态变量
Python类/静态变量 (Python Class / Static Variables)
Class or Static variables are class-related variables that are shared among all objects but the instance or non-static variable is unique for each object. In Python, there is no need for the keyword static to make a class variable but the static keyword is used to make a class or static variables in other programming languages like C++, C, Java, etc. The variable defined on the class level that is declared inside the class but outside any method in Python is static.
类或静态变量是在所有对象之间共享的与类相关的变量,但是实例或非静态变量对于每个对象都是唯一的。 在Python中,不需要使用关键字static来创建类变量,而是使用static关键字来创建类或其他编程语言(例如C ++,C,Java等)中的静态变量。在类级别定义的变量在类内部声明,但在Python中的任何方法外部都是静态的。
Let's look at an example for a better understanding of the static variable that returns some details about the intern of "includehelp" in Python.
让我们看一个示例,以更好地理解静态变量,该变量返回有关Python中“ includehelp”的内部实习生的一些详细信息。
Example for the class or static variable
类或静态变量的示例
# class definition class intern: site_name='Includehelp' field='Technical content writer' def __init__(self,name,programming_language): self.name=name self.programming_language=programming_language # object of the intern class x = intern('Bipin Kumar','Python') # printing the variables values print('Site name: ',x.site_name) print('Field of interest: ',x.field) print('Name of intern: ',x.name) print('Language: ',x.programming_language)
Output
输出量
Site name: Includehelp Field of interest: Technical content writer Name of intern: Bipin Kumar Language: Python
Explanation:
说明:
In the above example, site_name and field is a class or static variable which is declared inside the class "intern" but outside of the __init__ method and name and programming_language are instance variables. Here, x is the object of the class "intern" which has two arguments, one is the name of an intern and another one is the programming language.
在上面的示例中, site_name和field是一个类或静态变量 ,在类“ intern”内声明,但在__init__方法之外,并且name和programming_language是实例变量。 在此, x是“ intern”类的对象,该类具有两个参数,一个是实习生的名称,另一个是编程语言。
翻译自: https://www.includehelp.com/python/class-or-static-variables.aspx
python 类中静态变量
-
Python类的定义和使用
2019-03-06 10:35:18为了代码的编写方便简洁,引入了类的定义; 一般,使用 class 语句来创建一个新类,class之后为类的名称(通常首字母大写)并以冒号结尾,例如: class Ticket(): def __init__(self,checi,fstation,tstation,fdate,...为了代码的编写方便简洁,引入了类的定义;
一般,使用 class 语句来创建一个新类,class之后为类的名称(通常首字母大写)并以冒号结尾,例如:class Ticket(): def __init__(self,checi,fstation,tstation,fdate,ftime,ttime): self.checi=checi self.fstation=fstation self.tstation=tstation self.fdate=fdate self.ftime=ftime self.ttime=ttime def printinfo(self): print("车次:",self.checi) print("出发站:", self.fstation) print("到达站:", self.tstation) print("出发时间:", self.fdate)
#类中可以定义所使用的方法,类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self;
#init()方法是一种特殊的方法,被称为类的初始化方法,当创建这个类的实例时就会调用该方法;
#self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数;
接下来是类的对象的创建:#创建a1对象 a1=Ticket("G11","xian","beijing",'2019-01-20','13:00','18:00') #创建a2对象 a2=Ticket("T11","xian","beijing",'2019-01-21','13:00','19:00') ``
最后是对象属性的访问:
a1.printinfo() a2.printinfo()
输出结果如下:
现在,用类的方式爬虫12306的车站信息:import requests class Station(): #__init__()方法是一种特殊的方法,被称为类的初始化方法,当创建这个类的实例时就会调用该方法 # self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数 def __init__(self,code,cn,qp,jp): self.code=code self.cn=cn self.qp=qp self.jp=jp #类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。 def printinfo(self): print(self.code,self.cn,self.jp,self.qp) #self代表类的实例,表示当前对象的地址 self.__class__ 则指向类 def test(self): print(self) print(self.__class__) url="https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9077" #url='https://kyfw.lesson10_1.cn/otn/resources/js/framework/station_name.js?station_version=1.9090' html_text=requests.get(url).text infos=html_text[:-2].split("@")[1:] stations=[] for info in infos: station_list=info.split("|") #直接将类的对象添加到列表中,通过__init__()方法接受参数 stations.append(Station(station_list[2],station_list[1],station_list[3],station_list[4])) #遍历列表,每个元素为类的一个对象 for i in stations[:10]: i.printinfo() i.test()
结果如下:
嗯嗯~~就这样啦! -
Python 类与对象
2019-04-10 16:49:40类与对象的理解与封装特性 面向对象编程语言 - 类: 一个模板, (人类)---是一个抽象的, 没有实体的 - 对象: (eg: 张三, 李四) - 属性: (表示这类东西的特征, 眼睛, 嘴巴, 鼻子) - 方法: (表示这类物体可以...类与对象的理解与封装特性
面向对象编程语言 - 类: 一个模板, (人类)---是一个抽象的, 没有实体的 - 对象: (eg: 张三, 李四) - 属性: (表示这类东西的特征, 眼睛, 嘴巴, 鼻子) - 方法: (表示这类物体可以做的事情, eg: 吃饭, 睡觉,学习)
1). 定义类:class: 类
from collections import Counter
例子: str, list, dict, Counter
object代表是, 人类继承于哪一个类, 如果不知道继承哪个类, 就写object;
class 人类(object): # print('hello') # 构造方法(魔术方法), 当创建对象的时候, 自动执行的函数 def __init__(self, name, age, gender): # python解释器自动将对象传给self这个形参. # 看self到底是什么东西? # 将对象与该对象的属性绑定在一起. # 调用对象的属性两种方式: # - 张三.name # - self.name self.name = name # 属性 self.age = age # 属性 self.gender = gender # 属性 print(self) # 实质上是一个对象, <__main__.人类 object at 0x7f4fdc4864a8> # 方法(在类里面定义的函数, 叫做方法) def eat(self): print("%s 正在吃饭..." %(self.name))
创建对象====根据模板(类)创建对象(真实存在)
张三 = 人类("张三", 10, 'male') print("张三:", 张三)
看对象的属性
print(张三.name) print(张三.age) print(张三.gender)
让对象执行方法
张三.eat()
对象与类掌握练习
应用练习1 创建一个类People,拥有的方法为砍柴,娶媳妇,回家;实例化对象,执行相应的方法 显示如下: 老李,18岁,男,开车去娶媳妇 校思浩,22岁,男,上山去砍柴 唐浩,10岁,女,辍学回家 提示: 属性:name,age,gender 方法:goHome(), kanChai(),quXiFu()
class People(object): def __init__(self,name,age,gender): self.name = name self.age = age self.gender = gender def huiJia(self): print("%s,%d,%s,辍学回家" %(self.name,self.age,self.gender)) def quXiFu(self): print("%s,%d,%s,开车去娶媳妇" %(self.name,self.age,self.gender)) def kanChai(self): print("%s,%d,%s,上山砍柴" %(self.name,self.age,self.gender)) Laoli = People('老李',18,'男') zhangsan = People('校思浩',22,'男') lisi = People('唐浩',10, '女') Laoli.quXiFu() zhangsan.kanChai() lisi.huiJia()
类的私有属性与私有方法
类的私有属性: __private_attrs:两个下划线开头,声明该属性为私有, 不能在类地外部被使用或直接访问。 在类内部的方法中使用时 self.__private_attrs。 类的方法: 在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同, 类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。 self 的名字并不是规定死的(因为是形参),也可以使用 this,但是最好还是按照约定是用 self。 类的私有方法 __private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 , 不能在类地外部调用。self.__private_methods。
class People(object): def __init__(self,name,age,gender, money): self.name = name self.age = age self.gender = gender self.__money = money def __play(self): print("王者荣耀正在进行时") p1 = People('user1', 10, 'male', 1000000) print(p1.gender) p1.__play
栈数据结构的封装
应用练习2:栈的数据结构 class Stack: 栈的方法: 入栈(push), 出栈(pop), 栈顶元素(top), 栈的长度(lenght), 判断栈是否为空(isempty) 显示栈元素(view) 操作结果: 栈类的实例化 入栈2次 出栈1次 显示最终栈元素
class Stack(object): # 构造函数 def __init__(self): self.stack = [] def push(self, value): """ :param value: 入栈元素 :return: """ self.stack.append(value) return True def pop(self): # 判断栈是否为空 if self.stack: # 获取出栈元素, 并返回 item = self.stack.pop() return item else: return False def top(self): if self.stack: return self.stack[-1] else: return False def length(self): return len(self.stack) def isempty(self): return self.stack==[] def view(self): return ",".join(self.stack) s = Stack() s.push('1') s.push('2') s.push('3') s.push('4') print(s.top()) print(s.length()) print(s.isempty()) s.pop() print(s.view())
队列数据结构的封装
class Queue(object): # 构造函数 def __init__(self): self.queue = [] def push(self, value): self.queue.append(value) return True def pop(self): if self.queue: del self.queue[-1] else: return False def front(self): if self.queue: return self.queue[0] else: return False def rear(self): if self.queue: return self.queue[-1] else: return False def length(self): return len(self.queue) def isempty(self): return self.queue==[] def view(self): return ",".join(self.queue) s = Queue() s.push('1') s.push('2') s.push('3') s.push('4') print(s.front()) print(s.rear()) print(s.length()) print(s.isempty()) s.pop() print(s.view())
第二个特性之继承
概念:
- 父类与子类/基类和派生类
from io import TextIOWrapper
class Animals(object): def __init__(self, name, age): self.name = name self.age= age def eat(self): print('eating......') class Dog(Animals): # 当Dog没有构造方法时,执行Animals里面的构造方法 def __init__(self, name, age, power): # self.name = name # self.age = age # 执行Dog的父类的构造方法; super(Dog, self).__init__(name, age) self.power = power def eat(self): print(self.power) super(Dog, self).eat() # 1. 如果子类没有的属性和方法, 则去父类找, 如果父类也没有, 就报错。 d1 = Dog("大黄",3,100) print(d1.name) print(d1.age) print(d1.power) d1.eat()
多继承原理
#coding:utf-8 # # 经典类 # class Person1: # pass # p1 = Person1() # print(p1) # # # 新式类 # class Person2(object): # pass # p2 = Person2() # print(p2)
# 在python2中既有新式类也有经典类; # # # 经典类的继承算法: 深度优先算法 # 新式类的继承算法: 广度优先算法 # python3全部都是新式类; class D: def test(self): print("D test") class C(D): pass def test(self): print("C test") class B(D): pass # def test(self): # print("B test") class A(B,C): pass # def test(self): # print("A test") a = A() a.test()
三,多态性
#子类和父类存在相同方法时,子类会覆盖父类方法 #运形时总会调用子类方法--> 多态 class Animal(object): def run(self): print('running...') def cry(self): print('crying...') class Dog(Animal): def run(self): print('dog running...') def eat(self): print('dog eating...') class Cat(Animal): def run(self): print('cat running...') cat = Cat() cat.run() dog = Dog() dog.run()
图书管理系统
# 假设每本书只有一本 class Book(object): def __init__(self, name, author, state, bookIndex): self.name = name self.author = author # 0:'已借出' 1:'未借出' self.state = state self.bookIndex = bookIndex def __str__(self): return 'Book(%s, %d)' %(self.name, self.state) class BookManage(object): # 存放所有书籍信息, 列表里面存放的是Book对象 books = [] def start(self): """图书管理系统初始化数据""" self.books.append(Book('python', 'Guido', 1, 'IN23445')) self.books.append(Book('java', 'Guido1', 1, 'IN23445')) self.books.append(Book('C++', 'Guido2', 1, 'IN23445')) print("初始化数据成功!") def Menu(self): """图书管理菜单栏""" while True: print(""" 图书管理操作 1). 添加书籍 2). 删除数据 3). 查询书籍 4). 退出 """) choice = input("请输入你的选择:") if choice == '1': self.addBook() elif choice == '2': self.delBook() elif choice == '3': self.borrowBook() elif choice == '4': exit() else: print("请输入正确的选择!") def addBook(self): print("添加书籍".center(0, '*')) name = input("书籍名称:") bObj = self.isBookExist(name) if bObj: print("书籍%s已经存在" %(bObj.name)) else: self.books.append(Book(name,input("作者:"), 1, input("存放位置:"))) print("书籍%s添加成功" %(name)) def delBook(self): print("删除书籍".center(50,'*')) for i in self.books: print(i) name = input("删除书籍名称:") a = self.isBookExist(name) if a: self.books.remove(a) print("删除%s成功" %(a)) else: print("书籍不存在") def borrowBook(self): print("查询书籍".center(50,'*')) for i in self.books: print(i) name = input("查询书籍名称:") b = self.isBookExist(name) for book in self.books: if book == b: print(book) break else: print("%s不存在" %(b)) break def isBookExist(self, name): """检测书籍是否存在""" # 1. 依次遍历列表books里面的每个元素 # 2. 如果有一个对象的书名和name相等, 那么存在; # 3. 如果遍历所有内容, 都没有发现书名与name相同, 书籍不存在; for book in self.books: if book.name == name: # 因为后面需要 return book else: return False if __name__ == "__main__": bManger = BookManage() bManger.start() bManger.Menu()
-
Python类初始化– Python __init __()函数
2020-07-13 05:04:52Python类初始化 (Python class init) Whenever a beginner starts learning the Python programming language, they come across something like __init__ which usually they don’t fully understand. In this ... -
python类的定义与实例化
2020-11-03 22:42:48在Python中,通过class关键字定义一个类,比如我们需要定义一个人的类。按照 Python 的编程习惯,类名以大写字母开头。因此可以这样定义: class Person: pass 注意,在这个Person类的定义里面,并没有继承任何类... -
python类与c++类对比
2018-08-24 22:05:05本文将从类的角度讨论python和c++在语法层面和使用层面的不同 主要内容 语法方面: 先看c++类的一个简单的例子: class A { public: int i; void test() { std::cout << i <&... -
Python 类的封装
2018-06-04 14:42:42类的封装和构造可以让我们更好的组织项目结构。 本章我们来学习类的封装。 Student类的定义及实例化,每个实例都拥有各自的name和score。现在若需要打印一个学生的成绩,可定义函数 print_score() 该函数为类外的... -
python 类对象的销毁
2020-04-18 12:04:24python和Java一样都是垃圾自动回收,不需要我们显示地销毁对象。执行del obj时会调用对象的__del__方法,这样对象的引用计数会减1,当对象的引用计数为0时,对象就会被销毁,内存就会被回收。 继承object的del方法,... -
彻底搞懂Python类属性和方法的调用
2020-03-29 15:22:35Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。 一、类、对象概述 在面向对象程序设计中,把数据以及对数据的操作封装在一起,组成一个整体(对象),不同对象... -
C调用python类的正确方法
2019-04-24 19:06:15但是在C/C++程序中使用到python的类时会遇到很多坑,网上搜会得到很多相似的方法如下所示 首先声明,以下的方法是有问题的,有问题的地方我会使用红字标出 注: 下述所有导入方法在导入失败时不会报错, 只会返回空... -
python 类中的方法
2018-12-27 17:40:27上一篇中讲到 创建了类,并且重点讲述了构造函数以及类实例,特别是对那个self,描述了不少。在讲述构造函数的时候特别提到,init()是一个函数,只不过在类中有一点.../usr/bin/env python #coding:utf-8 class P... -
python类的方法中定义函数
2020-08-01 22:40:04代码: class A(): def run(self): ...注意类中方法和普通函数的区别,python类的方法必须要带self参数,否则会报错xxx() takes 0 positional arguments but 1 was given,原因:Python在类中定义. -
python 类的子类
2018-12-27 19:20:40看下面的代码,请仔细阅读,并看看是否能够发现点什么.../usr/bin/env python #coding:utf-8 class Person: def __init__(self, name, lang, email): self.name = name self.lang = lang self.email = email ... -
python类方法的使用
2019-04-15 19:36:17一、python类方法的特性 1、与静态方法一样,类方法可以通过类名调用类方法。 2、与静态方法一样,类成员方法无法访问对象实体变量,可以访问类的静态变量。 3、类方法需要传入代表本类的cls参数。 4、使用@... -
Python 类的定义与使用
2019-09-05 14:32:442019-9-5Python面向对象 类:描述具有相同属性和方法的对象的集合 类变量:在整个实例化的对象中是公用的,类变量定义在类中且在函数体之外,类变量通常不作为实例变量使用 方法重写:如果从父类继承的方法不能满足... -
Python分类求和方法
2018-11-27 16:40:51Python分类求和方法,Excel表格数据为例。 在Excel中经常会有根据列分类求和的需求,如果数据较少,可以在Excel中通过手动筛选的方法,但是数据较多那就比较麻烦啦。 这里需要用到groupby函数,pandas提供了一个... -
Python类继承及super()函数
2019-06-27 19:57:36文章目录Python中单类继承普通类方法继承初始化函数继承Python中多类继承 Python中单类继承 Python是一门面向对象的编程语言,支持类继承。新的类称为子类(Subclass),被继承的类称为父类、基类或者超类。子类继承... -
Python 类中的get和set方法
2020-10-05 17:55:19定义了一个Person类 具有name和age两个属性 在定义get方法前加@property装饰器,使用时候直接 变量 = 类名.属性名 不要加()!!!! 在定义set方法前加@属性名.setter装饰器 类名.属性名 = 新的值 classPerson... -
python类中函数相互调用方法(一看就懂)
2020-04-11 22:28:52方法一:self.方法(参数列表),注意参数列表不需要self 方法二:类名.方法(self,参数列表) 具体代码例子如下: # 利用测试次数和鸡蛋个数的关系变化带来的确定的楼层数来解题 class dropeggs: ... -
Python类定义字类变量与实例变量
2018-01-19 11:02:01学过JAVA或C++等语言的程序员再去学Python类设计时感觉非常不适应,因为Python是在太自由了,让人无所适从,来python定义类时的变量来说,其定义方式、作用域、操作方法都与上述两种语言有更大的可操作空间。Python... -
python 类继承
2018-07-19 19:04:13一个类继承另一个类时,会自动获得另一个类的所有属性和方法,被继承的类称之为父类,新类称为子类。子类拥有父类所有的属性和方法,并且可以定义自己的属性和方法。 首先我们定义一个表示动物的父类: class ... -
python类的使用,以及将类作为函数形参
2020-04-09 20:12:37class Dog(): def __init__(self, name, age): """初始化属性name和age""" self.name = name self.age = age self.num = 10 def sit(self): """模拟小狗被命令时蹲下""" p... -
python 类中一定需要有 __init__方法么?没有的会怎样?
2019-12-30 16:23:34python 类中一定需要有 __init __方法么?没有的会怎样? 在回答这个问题之前,先说两个问题: ① 面向对象编程? ② 什么是类? 面向对象,先上一个正式点的解释: “把一组数据结构和处理它们的方法组成对象... -
python类的三种方法
2018-07-09 15:20:56python类有三种方法。 1.一般方法,即不加任何修饰的,直接用def定义的方法。如: In [14]: class A: ...: def a(self): ...: print('一般方法') ...: In [15]: class_A = A() In [16]: class_A.a() 一般... -
python类的实例方法、静态方法和类方法区别及其应用场景
2018-04-14 15:48:00python类的实例方法、静态方法和类方法区别及其应用场景 一、先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法。 ps.python中self,cls的区别 普通实例方法,第一个参数需要是self,它表示一... -
python类方法中的self关键字
2018-08-30 14:55:05之前学python爬虫的时候要把函数封装到类里面,写成类方法,知道在python的类方法中第一个参数应该是self,但对self代表的具体意义不甚了了。最近在看Java,对面向对象编程的了解更多了一点,终于彻底弄明白self到底... -
python类中函数调用
2019-10-30 23:03:32#类及函数的定义 Class A: #构造函数: def __init__(self,var1,var2): self.var1 = var1 self.var2 = var2 def b(self,var1,var2): return var1+var2 #类内函数调用: var1=1 var2=2 #创建对象:... -
Python类参数设置默认值,使创建实例对象时可传参或不传参
2021-03-17 22:31:21Python类参数设置默认值,使创建实例对象时可动态键入实例参数数量. 例: class MyRectangle: """我的矩形类""" def __init__(self, x=0, y=0, width=100, height=100): """构造函数""" self.x = x self.y = y ... -
python类方法传递参数的问题
2019-08-29 17:35:12由于方法里定义的变量都是局部变量 所以没有办法直接在其他方法中使用 我试过先定义一个全局变量 然后 再调用 可不知道为什么 不管用 所以 就想了一些其他的方法 一起来看看 这个方法比较笨 但目前我只想到这个...