Python Forum

Full Version: accessing local variable outside class
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello,I am doing python code using raspberry pi for calculating body temperature. I want to know how can i access local variable that is declared in one function to the outside function


# Import Libraries
import os
import glob
import time
import RPi.GPIO as GPIO
from time import sleep
 
# Initialize the GPIO Pins
os.system('modprobe w1-gpio')  # Turns on the GPIO module
os.system('modprobe w1-therm') # Turns on the Temperature module
 
# Finds the correct device file that holds the temperature data
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
 
# A function that reads the sensors data
def read_temp_raw():
  f = open(device_file, 'r') # Opens the temperature device file
  lines = f.readlines() # Returns the text
  f.close()
  return lines
 
# Convert the value of the sensor into a temperature
def read_temp():
  lines = read_temp_raw() # Read the temperature 'device file'
  # While the first line does not contain 'YES', wait for 0.2s
  # and then read the device file again.
  while lines[0].strip()[-3:] != 'YES':
    time.sleep(0.1)
    lines = read_temp_raw()
 
  # Look for the position of the '=' in the second line of the
  # device file.
  equals_pos = lines[1].find('t=')
 
  # If the '=' is found, convert the rest of the line after the
  # '=' into degrees Celsius, then degrees Fahrenheit
  if equals_pos != -1:
    temp_string = lines[1][equals_pos+2:]
    temp_c = float(temp_string) / 1000.0
    temp_f = temp_c * 9.0 / 5.0 + 32.0
    return temp_c, temp_f

print(read_temp())
 
read_temp()
if temp_c >=20 and temp_f >=75:
        GPIO.setwarnings(False)
        #Select GPIO mode
        GPIO.setmode(GPIO.BCM)
          #Set buzzer - pin 23 as output
        buzzer=23 
        GPIO.setup(buzzer,GPIO.OUT)
        GPIO.output(buzzer,GPIO.HIGH)
        print("Beep")

# Print out the temperature until the program is stopped.
#while True:
  #print(read_temp())
  #time.sleep(9)
In the title you talk about class, but there is no OOP/class in your code, i.e. it's not very clear what you are asking/what you have problem with....
In your code you use return to pass value from function to outside scope and that is the correct way to do... Maybe elaborate further on what you are struggling with...

Looking closer at your code - on line 47 you need to assign what you return from your function to some variable in order ti use these values further in the code, e.g.
temp_c, temp_f = read_temp() #unpack the tuple returned by the function into two variables. I use the names you use later in the code
Note that you may want to do this first and then print these variables, instead of calling the function twice (on lines 45 and 47)...
Hello,I am doing python code using raspberry pi for calculating body temperature. I want to know how can i access local variable that is declared in one function to the outside function.
Please, don't start new threads unnecessarily. I deleted the second one you created and merged the third one into the original thread. I think my answer to your original post address the issue. If you have further questions, post in this thread.